Python:防止fileinput添加换行符

Ash*_*ppa 22 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
Run Code Online (Sandbox Code Playgroud)

问题是书面文件有:

  1. 行后插入一个空行.
  2. 行末尾的Ctrl-M字符.

如何防止这些额外的附属物插入文件?

jot*_*tos 37

您的换行符来自打印功能

使用:

import sys

sys.stdout.write ('some stuff')
Run Code Online (Sandbox Code Playgroud)

你的换行会消失


Eug*_*zov 10

使用

print line,
Run Code Online (Sandbox Code Playgroud)

要么

file.write(line)
Run Code Online (Sandbox Code Playgroud)

修复额外的换行符.

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


kwa*_*nke 7

而不是这个:

print line  # Put back line into file
Run Code Online (Sandbox Code Playgroud)

用这个:

print line,  # Put back line into file
Run Code Online (Sandbox Code Playgroud)


kmo*_*ote 5

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

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