同时读取多个文件的每一行

时间:2017-09-24 15:13:30

标签: python text file-io

我有' n' " .TXT"文件夹中的文件,我想同时打开它们并在循环中读取每个文件的每一行,然后每隔一行......

我的文件写得像这样:

0
1
0
1
1
0
0
0

我已经

file = fileinput.input(files=("text_{}.txt".format(i)))
for line in file:
    for ch in line:
        print file.readline()

由于

2 个答案:

答案 0 :(得分:1)

您可以一次打开多个文件,并轻松地将它们存储在一个数组中以迭代并执行“readline”。重要的是要记住关闭你打开的所有文件,因为习惯依赖“with”语句为你关闭它们(这对于这个特定的场景是不实际的)。示例代码:

filenames = ["File1.txt", "File2.txt"]
file_objs = []

for name in filenames:
    file_objs.append(open(name, "r"))

while file_objs:
    for file in file_objs:
        line = file.readline()
        if not line:
            file_objs.pop(file_objs.index(file)).close()
        else:
            ...

答案 1 :(得分:1)

如果您不想阅读内存中每个文件的内容,

FILES = ['1.txt', '2.txt', '3.txt']

if __name__ == '__main__':
    file_handles = {filename: open(filename, 'r') for filename in FILES}
    while file_handles:
        for filename, file in file_handles.items():
            line = next(file, None)
            if line is not None:
                line = line.rstrip('\n')
                print(line)
            else:
                file.close()
                file_handles.pop(filename)