我正在尝试在python中编写一个简单的代码来覆盖我现有的文件,并在我的文件中为每个值或行添加一个。
例如我的“num.txt”文件:
5 ---> 6
7 ---> 8
9 ---> 10
11 ---> 12
13 ---> 14
file = raw_input("Enter filename: ")
infile = open(file,'r')
for line in infile:
value = int(line)
infile.write(str(value + 1))
infile.truncate()
infile.close()
错误讯息:
infile.write(str(value + 1))
IOError: File not open for writing
我真的很感谢你的帮助
THX
格诺
答案 0 :(得分:1)
您的文件未开放供写,此行
infile = open(file,'r')
表示打开文件进行阅读。 如果要打开文件进行书写,可以使用' w' (写)或' r +' (读写)改为使用它:
infile = open(file,'r+')
您可以阅读更多内容(http://www.pythonforbeginners.com/files/reading-and-writing-files-in-python) - >模式部分。
如果您使用' r +'代码应该像
infile = open(file, 'r+')
for line in infile:
val = int(line)
infile.write(str(val + 1) + '\n')
infile.truncate()
infile.close()
但我想这不会达到您想要做的目的,这只会将值附加到最后。如果要将这些新值写入文件,请改为使用:
infile = open(file, 'r')
lines = infile.readlines() #this gives a list of all lines
infile.close()
outfile = open(file, 'w') #erases previous contents
for line in lines:
outfile.write(str(int(line) + 1) + '\n') #if you are sure file have int's only
outfile.close()