如何在替换后保留文件结构?
# -*- 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"
答案 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)