使用Python查找和替换 - 二进制文件

时间:2010-06-02 15:44:04

标签: python text replace

我正在尝试在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

2 个答案:

答案 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语句添加了一个额外的新行字符,因此它可能是文件的双倍间距。