Найти и заменить с помощью Python - Двоичный файл - PullRequest
1 голос
/ 02 июня 2010

Я пытаюсь найти и заменить файл на компьютере 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 голосов
/ 02 июня 2010

Попробуйте использовать sys.stdout.write вместо print. readlines () сохраняет символы новой строки в конце строки чтения. Оператор print добавляет дополнительный символ новой строки, поэтому он, вероятно, имеет двойной пробел в файле.

0 голосов
/ 02 июня 2010

Ваш код работал у меня нормально. Однако я бы предложил другой подход: не пытайтесь перезаписать файл напрямую. Мне никогда не нравится менять файл напрямую, потому что, если у вас есть ошибка или что-то подобное, файл теряется. Создайте новый файл и скопируйте его вручную (или в 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),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...