我正在使用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
问题是写入的文件有:
如何防止这些额外的附属物插入文件?
答案 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 = '')
避免插入新行。