在文件中将字符替换为另一个字符

时间:2013-06-28 15:55:05

标签: python file file-io python-3.x

我想在原地修改文件的某些字符,而不必将文件的全部内容复制到另一个文件中,或者覆盖现有文件。但是,似乎不可能只用另一个字符替换字符:

>>> f = open("foo", "a+")  # file does not exist
>>> f.write("a")
1
>>> f.seek(0)
0
>>> f.write("b")
1
>>> f.seek(0)
0
>>> f.read()
'ab'

这里我预计“a”会被“b”取代,因此文件的内容只是“b”,但事实并非如此。有没有办法做到这一点?

4 个答案:

答案 0 :(得分:2)

这是因为您正在使用的模式,在追加模式下,文件指针移到write之前的文件末尾,您应该以{{1​​}}模式打开文件:

w+

如果您想在现有文件上执行此操作而不截断它,则应以f = open("foo", "w+") # file does not exist f.write("samething") f.seek(1) f.write("o") f.seek(0) print f.read() # prints "something" 模式打开它以进行读写。

答案 1 :(得分:1)

首先使用file.truncate截断文件:

>>> f = open("foo", "a+") 
>>> f.write('a')
>>> f.truncate(0)  #truncates the file to 0 bytes
>>> f.write('b')
>>> f.seek(0)
>>> f.read()
'b'

否则按照@Guillaume建议的w+模式打开文件。

答案 2 :(得分:0)

import fileinput

for line in fileinput.input('abc', inplace=True):
    line = line.replace('t', 'ed')
    print line,

这不会逐字符替换,而是会扫描每行替换所需的字符并写入修改后的行。

例如: 文件'abc'包含:

i want 
to replace
character

执行后,输出为:

i waned
edo replace
characeder

它对你有帮助吗?希望如此..

答案 3 :(得分:0)

我相信您可以从这个答案中修改示例。

https://stackoverflow.com/a/290494/1669208

import fileinput

for line in fileinput.input("test.txt", inplace=True):
    print line.replace(char1, char2),
相关问题