python读取文件中随机一行(python随机读取文本文件某一行)

http://www.itjxue.com  2023-03-26 15:52  来源:未知  点击次数: 

python文件指针是什么,如何实现文件的随机读取

python文件指针是FILE类型的指针。通过移动文件指针,可以使用函数方法来进行文件的读取与写入。将文件都视为流,只能按顺序从头到尾读取。实际上,可在文件中移动,只访问感兴趣的部分(称为随机存取)。

Python随机读取文件实现实例

Python随机读取文件实现实例

这篇文章主要介绍了Python随机读取文件的相关资料,需要的朋友可以参考下

Python随机读取文件

代码如下

importosimportrandom rootdir="d:facetrain"file_names=[]forparent, dirnames, filenamesinos.walk(rootdir): #三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字 file_names=filenames # for filename in filenames: #输出文件信息 # print("parent is" + parent) # print("filename is:" + filename) # print("the full name of the file is:" + os.path.join(parent, filename))x=random.randint(0,len(file_names)-1)print(file_names[x])

注意

1.本代码在Python3.5上测试通过

2.rootdir参数意为你要遍历的那个文件夹的目录,请根据自己的实际需要自行修改

python随机提取文件中的某一列的任意一个值?

需要某列的某个值?

文本格式

1 2 3

4 5 6

如果是文本的话首先f.readlines()获得所有行,

然后用随机函数,?random.choice(array)随机获得列

strs.split()值转换成列表

再用随机函数random.choice(strs)

随机获得一个元素

如果是单元格的话

就是先获取单元格的行和列

然后用随机函数

random.randint(0, 有效行)

random.randint(0, 有效列)

table.cell_value(列,行)

就能获取任意值了

用python读取文本文件,对读出的每一行进行操作,这个怎么写?

用python读取文本文件,对读出的每一行进行操作,写法如下:

f?=?open("test.txt",?"r")

while?True:

line?=?f.readline()

if?line:

pass????#?do?something?here

line=line.strip()

p=line.rfind('.')

filename=line[0:p]

print?"create?%s"%line

else:

break

f.close()

扩展资料:

Python将txt文件读取到一个字符串里的操作方法如下:

1、首先,添加Python文件和文本文件以在vscode中读取,如下图所示。

2、其次,完成上述步骤后,在txt文件中写入一些内容以用于内容读取,只需将其写入即可,如下图所示。

3、接着,完成上述步骤后,必须导入os文件,以便可以在os中调用某些文件操作方法,如下图所示。

4、然后,完成上述步骤后,打开要读取的文件,并将读取的内容数据复制到字符串中,如下图所示。

5、随后,完成上述步骤后,打印字符串以显示内容,以方便参考,如下图所示。

6、接着,完成上述步骤后,运行jy.py文件,该文件将开始读取和打印内容,如下图所示。

7、最后,完成上述步骤后,可以看到已读取txt文件的内容,如下图所示。

python如何随机读取一行

#!/usr/bin/env?python

#?coding:?utf-8

def?getfilelines(filename,?eol='\n',?buffsize=4096):

????"""计算给定文件有多少行"""

????with?open(filename,?'rb')?as?handle:

????????linenum?=?0

????????buffer?=?handle.read(buffsize)

????????while?buffer:

????????????linenum?+=?buffer.count(eol)

????????????buffer?=?handle.read(buffsize)

????????return?linenum

def?readtline(filename,?lineno,?eol="\n",?buffsize=4096):

????"""读取文件的指定行"""

????with?open(filename,?'rb')?as?handle:

????????readedlines?=?0

????????buffer?=?handle.read(buffsize)

????????while?buffer:

????????????thisblock?=?buffer.count(eol)

????????????if?readedlines??lineno??readedlines?+?thisblock:

????????????????#?inthisblock:?findthe?line?content,?and?return?it

????????????????return?buffer.split(eol)[lineno?-?readedlines?-?1]

????????????elif?lineno?==?readedlines?+?thisblock:

????????????????#?need?continue?read?line?rest?part

????????????????part0?=?buffer.split(eol)[-1]

????????????????buffer?=?handle.read(buffsize)

????????????????part1?=?buffer.split(eol)[0]

????????????????return?part0?+?part1

????????????readedlines?+=?thisblock

????????????buffer?=?handle.read(buffsize)

????????else:

????????????raise?IndexError

def?getrandomline(filename):

????"""读取文件的任意一行"""

????import?random

????return?readtline(

????????filename,

????????random.randint(0,?getfilelines(filename)),

????????)

if?__name__?==?"__main__":

????import?sys

????import?os

????if?len(sys.argv)?==?1:

????????print?getrandomline("/home/tim/documents/users.csv")

????else:

????????for?f?in?filter(os.path.isfile,?sys.argv[1:]):

????????????print?getrandomline(f)

对于超大文件建议用逐行或分块的方式处理;逐行处理可能慢一些,但编码更简单清晰一点;上面给出的是按分块方式处理的。

python 随机读取文件夹内一个文本文件

来个批量读取文件的例子:

def?read_test_data():

????for?parent,dirnames,filenames?in?os.walk(pbx_test_path):

????????for?filename?in?filenames:

????????????if?filename[:5]?==?"TEST_":

????????????????file_path?=?pbx_test_path+"\%s"?%?filename

????????????????#file_bak_path?=?pbx_test_path_bak+"\%s"?%?filename

????????????????if?os.path.isfile(file_path):

????????????????????#print?file_path

????????????????????read_by_file(file_path)

????????????????????#shutil.copyfile(file_path,file_bak_path)

????????????????????try:

????????????????????????os.remove(file_path)

????????????????????except??WindowsError:

????????????????????????pass

?????????????????

def?read_by_file(file_path):

????file_object?=?open(file_path)

????count?=?0

????thefile?=?open(file_path,?'rb')

????while?True:

????????buffer?=?str(thefile.readline())

????????if?not?buffer:

????????????break

????????all_test_list?=?buffer.split(";")

????????all_test_list?=?all_test_list[:len(all_test_list)-1]#去除回车行

????????ziduan_str?=?""

????????value_str?=?""

????????for?i,test?in?enumerate(all_test_list):

????????????test_attr_list?=?test.split("=")

????????????ziduan_str?+=?""+test_attr_list[0]+","

????????????value_str?+=?"'"+test_attr_list[1]+"',"

????????ziduan_str?=?"("+ziduan_str[:len(ziduan_str)-1]+")"

????????value_str?=?"("+value_str[:len(value_str)-1]+")"

????????sql_str?=?"insert?into?pbx_test"+ziduan_str+"?values"+value_str+""

????????#mssql.insert(sql_str)

????????session.execute(sql_str)

????????count?+=?buffer.count('\n')

????commit()

????thefile.close()

(责任编辑:IT教学网)

更多

推荐linux文章