Подтвердить что ты не робот

Python: запретить добавление символов новой строки fileinput

Я использую Python script для для поиска и замены определенных строк в текстовых файлах данного каталога. Я использую модуль fileinput, чтобы упростить операцию поиска и замены, то есть файл читается, текст заменяется и записывается обратно в тот же файл.

Код выглядит следующим образом:

import fileinput
def fixFile(fileName):
    # Open file for in-place replace
    for line in fileinput.FileInput(fileName, inplace=1):
        line = line.replace("findStr", "replaceStr")
        print line  # Put back line into file

Проблема заключается в том, что записанные файлы имеют:

  • Одна строка, вставленная после каждой строки.
  • Символ Ctrl-M в конце каждой строки.

Как предотвратить добавление этих дополнительных придатков в файлы?

4b9b3361

Ответ 1

Ваши новые строки поступают из функции печати

использование:

import sys

sys.stdout.write ('some stuff')

и ваши разрывы строк исчезнут

Ответ 2

Используйте

print line,

или

file.write(line)

чтобы исправить дополнительные строки новой строки.

По сравнению с [Ctrl] - [M] - это, вероятно, вызвано входными файлами в DOS-кодировке.

Ответ 3

Вместо этого:

print line  # Put back line into file

используйте это:

print line,  # Put back line into file

Ответ 4

Измените первую строку в цикле for на:

line = line.rstrip().replace("findStr", "replaceStr")

Ответ 5

Для обновления на Python 4.3 вы можете просто использовать:

print(line, end = '')

чтобы избежать ввода новой строки.

Ответ 6

Из-за того, что каждый оператор печати итерации заканчивается символом новой строки, вы получаете пустую строку между строками.

Чтобы преодолеть эту проблему, вы можете использовать полосу вместе с печатью.

import fileinput
def fixFile(fileName):
  for line in fileinput.FileInput(fileName, inplace=1):
    line = line.replace("findStr", "replaceStr")
    print line.strip()

Теперь вы можете видеть, что пустые строки чередуются.