python打开一个文件并替换内容[重复]
Posted
技术标签:
【中文标题】python打开一个文件并替换内容[重复]【英文标题】:python open a file and substitute the content [duplicate] 【发布时间】:2015-10-01 05:38:27 【问题描述】:我想打开一个 txt 文件并将所有“hello”替换为“love”并保存而不创建新文件。修改同一个txt文件中的内容即可。
我的代码只是可以在“hello”之后添加“love”,而不是替换它们。
有什么方法可以解决吗?
非常感谢
f = open("1.txt",'r+')
con = f.read()
f.write(re.sub(r'hello','Love',con))
f.close()
【问题讨论】:
***.com/questions/2424000/… 也许这就是你的问题的答案How to search and replace text in a file using Python? 【参考方案1】:读取文件后,文件指针在文件末尾;如果你写然后,你将追加到文件的末尾。你想要类似的东西
f = open("1.txt", "r") # open; file pointer at start
con = f.read() # read; file pointer at end
f.seek(0) # rewind; file pointer at start
f.write(...) # write; file pointer somewhere else
f.truncate() # cut file off in case we didn't overwrite enough
【讨论】:
不应该是f = open('1.txt', 'r+')
?
@KhalilAmmour-خليلعمور 是的。
非常感谢。它现在可以工作了:)【参考方案2】:
您可以创建一个新文件并替换您在第一个文件中找到的所有单词,然后将它们写入第二个文件。见How to search and replace text in a file using Python?
f1 = open('file1.txt', 'r')
f2 = open('file2.txt', 'w')
for line in f1:
f2.write(line.replace('old_text', 'new_text'))
f1.close()
f2.close()
或者,您可以使用fileinput
import fileinput
for line in fileinput.FileInput("file",inplace=1):
line = line.replace("hello","love")
【讨论】:
所有这些都成立,直到您必须用较长的单词替换较小的单词。在这种情况下,您必须在内存中执行此操作或使用 mmap 模块在运行时更改文件的大小,将字符移动到新位置并插入您需要的内容。对于其他情况, seek() tell() 和 truncate() 会有所帮助。 啊哈,是的,需要明确的是,您可以在没有 mmap 的情况下将文件内容移动到正确的位置,但这会更有效地杀死您和操作系统。 mmap 允许您将 RAM 或磁盘内存用作可变字符串。以上是关于python打开一个文件并替换内容[重复]的主要内容,如果未能解决你的问题,请参考以下文章