用于从目录

时间:2016-07-15 11:57:08

标签: python python-3.x

我有一个包含在目录中的.txt文件列表。每个文件可能有多行。可能是Python脚本从该目录中包含的所有文件中删除所有换行符?生成的文件应该只有一行包含所有文本。

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

2 个答案:

答案 0 :(得分:0)

使用glob.glob()查找感兴趣的文件,即以.txt结尾的文件。 glob()返回匹配文件名列表,并保留路径不变,因此您无需更改目录。

使用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都会匹配换行符。

答案 1 :(得分:-1)

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"