Python脚本从包含在目录中的.txt文件中去除新行

问题描述:

我有一个包含在目录中的.txt文件列表。每个文件可能有多行。 Python脚本可能会剥离该目录中包含的所有文件的所有换行符?结果文件应该只有一行包含所有文本。Python脚本从包含在目录中的.txt文件中去除新行

import os 
os.chdir("/home/Pavyel/Desktop/Python Programs") 

for i in os.listdir(os.getcwd()): 
    if i.endswith(".txt") : 
    f = open(i) 
    contents = f.read() 
    new_contents = contents.replace('\n', '') 
    print i 
    continue 
else: 
    continue 
+4

可能有很多脚本......你有没有试过写一个呢? – mhawke

+0

进口OS os.chdir( “/家/ iitp /桌面/ Python程序”) 因为我在os.listdir(os.getcwd()): 如果i.endswith( “TXT”): ˚F =开放(I) 内容= f.read() new_contents = contents.replace( '\ n', '') 打印我 继续 其他: 继续 – Pavyel

import os 
import sys 
import fileinput 

dir = "." #Directory to scan for files 

file_list = os.listdir(dir) 

for file in file_list: 
    if file.endswith(".txt"): 
     with fileinput.FileInput(file, inplace=True, backup=".bak") as f: 
      for line in f: 
       sys.stdout.write(line.replace("\n", "")) 

这也将创建编辑的所有文件进行备份,以防万一。
如果您不希望备份从第7个删除, backup=".bak"

+0

问题这一行:打印(line.replace( “\ n”,“”),end =“”) – Pavyel

+0

@Pavyel **您正在运行Python的不兼容版本。最有可能的是Python 2,因为它不支持新的打印功能。该脚本在我的电脑上工作得很好。无论如何,我已经更改了代码,因此可以与更多的Python版本一起使用。 – Janekmuric

使用glob.glob()找到感兴趣的文件,即那些以.txt结尾的文件。​​3210返回匹配文件名的列表,并且保持路径不变,因此您不需要更改目录。

过程与fileinput.input()到位文件:

import fileinput 
from glob import glob 

pattern = '/home/Pavyel/Desktop/Python Programs/*.txt' 
files = glob(pattern) 
if files: 
    with fileinput.input(files, inplace=True) as f: 
     for line in f: 
      print(line.rstrip('\n'), end='') 

如果您正在使用Python 2中它可能是值得传递mode='U'fileinput.input(),以确保通用换行符处理被启用,因为是Python 3的默认值。通过启用该功能,无论代码运行的平台如何,您都可以确定\n将匹配换行符。