Python:防止fileinput添加换行符

时间:2009-03-18 06:44:31

标签: python file-io

我正在使用Python脚本查找和替换给定目录的文本文件中的某些字符串。我使用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

问题是写入的文件有:

  1. 每条行后插入一个空行。
  2. 每个行末尾的Ctrl-M字符。
  3. 如何防止这些额外的附属物插入文件?

6 个答案:

答案 0 :(得分:36)

您的换行符来自打印功能

使用:

import sys

sys.stdout.write ('some stuff')

你的换行符将会消失

答案 1 :(得分:10)

使用

print line,

file.write(line)

修复额外换行符。

从[Ctrl] - [M]开始 - 这可能是由DOS编码的输入文件引起的。

答案 2 :(得分:7)

而不是:

print line  # Put back line into file

使用它:

print line,  # Put back line into file

答案 3 :(得分:5)

将for循环中的第一行更改为:

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

答案 4 :(得分:1)

由于每次迭代打印语句都以换行符结束,因此行之间会出现空行。

要解决此问题,您可以使用strip和print。

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

现在,您可以看到空白行是条纹的。

答案 5 :(得分:0)

有关Python 4.3的更新,您可以使用:

print(line, end = '')

避免插入新行。