python读取文件中随机一行(python随机读取文本文件某一行)
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()