我正在尝试在Mac OS X计算机上的文件中执行“查找和替换”。虽然它似乎工作正常。似乎文件以某种方式被改变了。我使用的文本编辑器(Text Wrangler)在完成后甚至无法打开文件。
这是我拥有的代码:
import fileinput
for line in fileinput.FileInput("testfile.txt",inplace=1):
line = line.replace("newhost",host)
print line,
当我从终端查看文件时,它确实说“testfile”可能是二进制文件。无论如何看到它?这个替换是否有可能破坏文件?我还有其他选择吗?我非常感谢你的帮助。
谢谢你, 亚伦
更新:实际文件不是.txt文件,它是.plist文件,如果有任何区别,它是Mac OS X中的首选项文件
链接到plist文件: http://www.queencitytech.com/plist.zip
答案 0 :(得分:0)
你的代码对我很有用。但是,我建议采用不同的方法:不要尝试直接覆盖文件。我从不喜欢直接更改文件,因为如果你有一个错误或类似的东西,文件丢失。生成一个新文件,然后手动复制(或者在python中,如果你真的想要)。
PATH = 'testfile.txt'
FILE = open(PATH)
OUT_FILE = open('out_' + PATH, 'w')
for line in FILE.readlines():
print >> OUT_FILE, line.replace('newhost', host),
答案 1 :(得分:0)
尝试使用sys.stdout.write而不是print。 readlines()保留读取行末尾的新行字符。 print语句添加了一个额外的新行字符,因此它可能是文件的双倍间距。