使用Python在每行末尾添加新行

时间:2011-03-03 06:44:40

标签: python

如何在替换后保留文件结构?

# -*- coding: cp1252 -*-

import os
import os.path
import sys
import fileinput

path = "C:\\Search_replace"  # Insert the path to the directory of interest

#os.path.exists(path)
#raise SystemExit

Abspath = os.path.abspath(path)
print(Abspath)
dirList = os.listdir(path)
print ('seaching in', os.path.abspath(path))
for fname in dirList:
    if fname.endswith('.txt') or fname.endswith('.srt'):
        #print fname
        full_path=Abspath + "\\" + fname
        print full_path
        for line in fileinput.FileInput(full_path, inplace=1):
            line = line.replace("þ", "t")
            line = line.replace("ª", "S")
            line = line.replace("º", "s")
            print line
print "done"

3 个答案:

答案 0 :(得分:4)

清晰度部门的问题并不是很好,但是如果你希望Python在没有换行符的情况下将内容打印到标准输出,你可以使用sys.stdout.write()代替print()

如果您想执行替换并将其保存到文件中,您可以执行Senthil Kumaran建议的操作。

答案 1 :(得分:3)

而不是fileinput行中的print line,而是在结尾处执行sys.stdout.write(line)。并且不要在循环中的其他位置使用print。

除了使用fileinput进行单词替换之外,您还可以使用这种简单的单词替换方法:

import shutil
o = open("outputfile","w") #open an outputfile for writing
with open("inputfile") as infile:
   for line in infile:
     line = line.replace("someword","newword")
     o.write(line + "\n")
o.close()
shutil.move("outputfile","inputfile")

答案 2 :(得分:1)

使用

迭代文件的行时
 for line in fileinput.FileInput(full_path,inplace=1)

line将包含行数据,包括换行符(如果这不是最后一行)。因此,通常在这种模式中,您要么想要用

去掉额外的空格
line = line.rstrip()

或打印出来,而不是通过使用

添加您自己的换行符(如print所做的那样)
sys.stdout.write(line)