在python中使用循环打开多个文件

时间:2016-02-26 22:54:29

标签: python

基本上我试图根据列表传递的名称打开多个文件。 我在Log /中有以下名称的文件

here is the dir structure
script---myfile.py
       |
       |----Log/*.txt


following files are in Log/
parse_1d_30a.txt, 
parse_10d_60a.txt,
parse_20d_90a.txt


#!/usr/bin/python
deviation = ['1', '10', '20']
angle = ['30', '60', '90']

def openFile(dev, ang):
    p = open('Log/parse_%sd_%sa.txt'%(dev, ang), 'r')
    print "open file is", p.name
    p.close()

    print "file closed."

def main():
    for d, a in zip(deviation, angle):
        openFile(d, a)
main()

因此,当我执行代码时,第一个文件parse_1d_30a.txt打开,但对于其他文件,它会给出IOError:没有这样的文件或目录。

我认为通过使用' glob'它可能会奏效。我知道如何在python中单独打开文件,但不知道为什么我上面的代码错了,同样的替代方法是什么。

由于

1 个答案:

答案 0 :(得分:1)

使用glob,你不能强加像Regex这样的绝对精确度。在glob中,您需要使用*(任意数量的字符)或?(任何单个字符)中的一个,这使得很难进行严格匹配。

关闭我可以得到:

>>> import glob
>>> glob.glob(r'parse_[0-9]*d_[0-9][0-9]a.txt')
['parse_20d_90a.txt', 'parse_1d_30a.txt', 'parse_10d_60a.txt']

此处*可以匹配任意数量的字符,这些字符可能会导致基于文件名和所需输出的错误输出。