修改文件中的单行

时间:2011-06-23 16:11:08

标签: python file-io for-loop

在Python中,有没有办法修改文件中的单行而没有for循环遍历所有行?

文件中需要修改的确切位置未知。

3 个答案:

答案 0 :(得分:3)

是的,您可以修改该行,但如果长度发生变化,您将不得不重写该文件的其余部分。

您还需要知道文件中的位置。这通常意味着程序至少需要读取文件直到需要更改的行。

有例外 - 如果这些行都是固定长度,或者你在文件上有某种索引,例如

答案 1 :(得分:3)

除非我们谈论的是一个你已经对文件了解很多的相当人为的情况,否则答案是否定的。您必须迭代文件以确定换行符的位置;在文件存储方面没有什么特别的“线” - 它看起来都一样。

答案 2 :(得分:2)

这应该有效 -

f = open(r'full_path_to_your_file', 'r')    # pass an appropriate path of the required file
lines = f.readlines()
lines[n-1] = "your new text for this line"    # n is the line number you want to edit; subtract 1 as indexing of list starts from 0
f.close()   # close the file and reopen in write mode to enable writing to file; you can also open in append mode and use "seek", but you will have some unwanted old data if the new data is shorter in length.

f = open(r'full_path_to_your_file', 'w')
f.writelines(lines)
# do the remaining operations on the file
f.close()

但是,如果文件太大,这可能会消耗资源(时间和内存),因为f.readlines()函数会在列表中加载整个文件,分成行。 这对于中小型文件来说很好。