PYTHON - 读取并覆盖文件并将每个值加1

时间:2015-04-14 10:34:42

标签: python-2.7

我正在尝试在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

格诺

1 个答案:

答案 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()