Python3:文件读写
open
f = open('filename','r') # 读模式
f = open('filename','w') # 写模式
f = open('filename','a') # 追加模式
注:rb 是以二进制读取
现在你觉得没用对吧,我也这么觉得。。。
but
在以后用到socket的时候,传输文件,读取和写入用的都是二进制形式
rb和wb可以更快速的进行文件的传输
读取内容方式
f.read() # 一次读取整个文件,文件大不适用
f.readline() # 一次只读取一行,占内存小,速度慢
f.readlines() # 一次性读取,将内容分析成一个行的列表,可以由for...in...处理
写文件方式
f.write(content) # 不会换行哦
f.writeline(content) # 下次会写在下一行
close
示例代码一:
f = open('cdays-4-test.txt', 'r') #以读方式打开文件
result = list()
for line in f.readlines(): #依次读取每行
line = line.strip() #去掉每行头尾空白
if not len(line) or line.startswith('#'): #判断是否是空行或注释行
continue #是的话,跳过不处理
result.append(line) #保存
result.sort() #排序结果
f.close() #关闭文件
with open('new_file.txt','w') as fw: #with方式不需要再进行close
fw.write('%s' % '
'.join(result)) #保存入结果文件
示例代码二:
#txtName:文件名,包含完整路径
#dataList:数据
def saveTxt(txtName,dataList):
yyb_data = []
if len(dataList)>0:
for i in range(0,len(dataList)):
yyb_data.append(dataList[i].v1 + "," + dataList[i].v2 + "," + dataList[i].v3 + "," + dataList[i].v4 + "," + dataList[i].v5 + ","
+ dataList[i].v6 + "," + dataList[i].v7 + ","+ dataList[i].v8 + "," + dataList[i].v9 + "," + dataList[i].v10 + ","
+ dataList[i].v11 + "," + dataList[i].v12 + "," + dataList[i].v13 + "," + dataList[i].v14+"
")
dbcfg = dbconfig()
vrg_savePath=dbcfg[4]
file = vrg_savePath+txtName
if os.path.exists(file):
os.remove(file)
#解决编码问题encoding='utf-8'
out = open(file, "a",encoding='utf-8')
for row in yyb_data:
out.writelines(row)
out.close()