【发布时间】:2017-11-03 01:31:50
【问题描述】:
我知道之前有人问过类似的问题,但我是 python 新手,我找不到解决问题的方法:
我想做的是: 1. 打开一个文件,逐行读取。 (我已经设法做到了) 2. 在每一行之后添加一些新内容。 (我想稍后将它与 if 语句结合起来,以便只编辑特定的行)
我的代码:
#!/usr/bin/python3.4
file = open('testfile', 'r+')
readlinebyline = file.readline()
for i in range(0, len(readlinebyline)):
readlinebyline.write(' ' + 'checked')
print('done')
我希望我的测试文件之后看起来像这样:
line1 checked
line2 checked
line3 checked
...
但它看起来像这样:
line1
line2
line3
checked checked checked
如何让程序在每行之后停止,然后添加新内容?
【问题讨论】:
-
您不是逐行阅读,而是一次阅读整个文件,而且您提供的代码会产生几个错误。
-
代码没有产生任何错误。抱歉,我没有使用 testfile.readlines()。我使用了 testfile.readline()。如果这有所作为。刚刚编辑了
-
是的。它将产生一个
NameError,因为没有定义testfile,即使它是,那么for i in range(0, len(readlinebyline()):会抛出一个TypeError,因为列表对象是不可调用的。甚至除此之外,readlinebyline.write会抛出AttributeError,因为列表对象没有write属性。 -
但基本上,如果您有能力将整个文件读入内存,最简单的方法是将其全部读入内存(作为您所做的列表),然后截断文件,然后随心所欲地写出来。
-
用修改后的文件创建一个新文件几乎总是比尝试修改您正在阅读的文件更好。当然,一旦新文件关闭,如果您愿意,您可以轻松地用它替换原始文件。这样工作不仅更简单,而且更安全:如果你的机器在你的代码运行时崩溃或断电,你的数据不会被破坏。
标签: python