f=open('data.txt','a+',encoding='utf-8')
for line in f:
line=line.replace(',',',')
f.write(line)
f.close()
这是我的错误代码。。请大佬赐教
f=open('data.txt','a+',encoding='utf-8')
for line in f:
line=line.replace(',',',')
f.write(line)
f.close()
这是我的错误代码。。请大佬赐教
错误的原因在于文件读写的处理方式,应该先正确理解文件的打开模式。
正确的做法是先以'r'模式读取全部文件内容,完成替换后再以'w'模式一次性写入。
对于超大文件,可以先开临时文件,逐行处理写入完成后,在以临时文件替换目标文件。
a+
还是 r+
都是可读写的,但是你得清楚两种模式打开文件时指向的位置, r+
模式打开文件指向开头, a+
模式打开文件指向结尾。
with open('data.txt', 'r+', encoding='u8') as fp:
s = fp.read().replace(',', ',')
fp.seek(0)
fp.truncate()
fp.write(s)
或者
with open('data.txt', 'a+', encoding='u8') as fp:
fp.seek(0)
s = fp.read().replace(',', ',')
fp.seek(0)
fp.truncate()
fp.write(s)
当然文件比较大就不要一次性读到内存中了,按行迭代读写分离好点。
f=open('data.txt','r',encoding='utf-8')
new_txt = f.read().replace(',',',')
f.close()
f2=open('data2.txt','w',encoding='utf-8')
new_txt = f2.write(new_txt)
f2.close()
读写不能同时进行,要分开操作,你那个for line in f说明你是一个刚学,而且学得很烂的新手。
with open('file.txt', 'r+', encoding='utf-8') as fp:
s = fp.read()
fp.seek(0)
fp.write(s.replace(',', ','))
4 回答4.4k 阅读✓ 已解决
1 回答3.1k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.9k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
replace(/\,/g,',')