在Python中打开多个文件

5

如何在Python编程语言中同时打开多个文件以运行程序?

我有大约15个文件,现在我已经使用以下方式处理了其中一个文件:

f=open("Exemplo_1.txt","rU")

1
如果您可以打开其中一个文件,那么您在打开多个文件方面遇到了什么问题? - Rohit Jain
4个回答

6
你可以使用 globfileinput 的组合。
import fileinput
from glob import glob

fnames = glob('Exemplo_*.txt')
for line in fileinput.input(fnames):
    pass # do whatever

3
f1=open("Exemplo_1.txt","rU");  
f2=open("Exemplo_2.txt","rU");  
...  
f15=open("Exemplo_15.txt","rU");

您基本上是创建文件对象以访问文件。

如果不需要并行打开,我建议使用 with(open("Exemplo_1.txt", "rU")) as f1: - with 关键字可以在出现异常时正确清理。 - thegrinner
5
有没有可能说服您删除分号呢?;-) - mgilson
3
为十五个打开的文件使用十五个不同的名称似乎不切实际,除非每一个都要被单独处理,否则它们需要被放入可迭代的集合中以避免大量的代码重复。我认为将它们放入列表或字典中可能是一个更好的想法。 - DSM
我认为Rohit Jain在问题回答中的评论已经回答了你们的问题 :) 关于分号,@mgilson,我不想让有人在SO上再提出另一个问题,说f = open(..)在Python中无法工作! :) - venkatKA

3
我会这样做:

我会像这样做:

try:
    f = [open("Exemplo_%d.txt" % i, "rU") for i in range(1, 16)]
    # do stuff
finally:
    for fh in f:
        fh.close()

请参阅 try/finally

这对我非常有效。我只是想了解语法。%d和%i部分... - Vreddhi Bhat
我发现这非常有用。我需要打开1000个文件,并向每个文件写入大数据集的随机样本。这个大数据集太大了,无法全部载入内存。 - denson

2
如果您需要一次循环遍历多个文件,请使用fileinput模块。
for x in fileinput.input(['patterns.in', 'logfile.txt']):
    print x

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接