2014-10-01 95 views
0

我在使用python将数据写入文本文件时遇到了一些麻烦。基本上,我想要做的是读取文本文件中的信息,更新读取的文本,并将更新的信息写回同一文本文件。阅读和更新文本很容易,但是,当我尝试将更新后的文本写回到文本文件时遇到了困难。写入文本文件的问题

该文本文件非常基本,由三行组成。那就是:

48850 

z_merged_shapefiles 

EDRN_048850 

我用下面的代码,试图更新,但得到这个错误:'file' object has no attribute 'writeline'

这里是我使用的代码:

fo = open("C:\\Users\\T0015685\\Documents\\Python\\Foo1.txt", "r") 

read1 = fo.readline() 
read2 = fo.readline() 
read3 = fo.readline() 

fo.close() 

edrn_v = int(read1) + 1 
newID = "EDRN_" + str(edrn_v) 

fo = open("C:\\Users\\T0015685\\Documents\\Python\\Foo1.txt", "w") 

fo.writeline(edrn_v) 
fo.writeline(read2) 
fo.writeline(newID) 

回答

5

虽然有readline没有模拟writeline

您可以使用一个write并附加'\n'终止线

with open("C:\\Users\\T0015685\\Documents\\Python\\Foo1.txt", "w") as fo: 
    fo.write(edrn_v + '\n') 
    fo.write(read2 + '\n') 
    fo.write(newID + '\n') 

或者把所有的变量在list和使用writelines

with open("C:\\Users\\T0015685\\Documents\\Python\\Foo1.txt", "w") as fo: 
    fo.writelines([edrn_v, read2, newID]) 

注意

我现在用的是with open声明

with open() as f: 

所以,你不必管理openclose自己

f.open() 
f.read() 
f.close() 
+0

感谢网络,你的答案的作品。虽然有一个问题,但它按照我的预期进行读写操作,但在第3行创建了空间,并将我期望在其中的内容移动到第4行。您知道为什么发生这种情况以及如何阻止它吗? – Geord359 2014-10-02 09:47:05