所以我想通读一个文件检查每一行,看看它是否包含我正在寻找的字符串的一部分。一旦找到正确的行,我就想在文件中重写该行。
这是我到目前为止所做的:
f = open("playlist.py", "r+")
for line in f:
if old in line:
f.write(" " + str(item) + ":" + " " +
"\"" + new_text + "\"")
f.close()
break
f.close()
此代码找到正确的行但写入文件的末尾。我有点想读和写iters会被分享,但我猜不是:(
答案 0 :(得分:1)
使用fileinput
import fileinput
for line in fileinput.input("test.txt", inplace=True):
if contains_str_youlookingfor:
print "what_you_want_to_rewire"
else:
print line.rstrip()
fileinput.close()
如果您使用的是Python 3.2+,则首选上下文管理器:
with fileinput.input("test.txt", inplace=True) as f:
for line in f:
if contains_str_youlookingfor:
print("what_you_want_to_rewire")
else:
print(line, end='')
这些行将被"what_you_want_to_rewire"
替换,并且不会创建新文件。
修改强>
如果您没有删除原始换行符或没有换行符打印,那么您将获得额外的空行。
答案 1 :(得分:0)
你可以用r +模式打开文件然后将内容读入列表并替换包含你想要的数据的行(列表项)然后将整个文件写回仍然打开的文件?像这样的东西
f=open(filename, 'r+')
data=f.readlines()
for line in data:
if old in line:
line=" " + str(item) + ":" + " " +
"\"" + new_text + "\""
f.truncate()
f.writelines(data)
f.close()