基本上我试图根据列表传递的名称打开多个文件。 我在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中单独打开文件,但不知道为什么我上面的代码错了,同样的替代方法是什么。
由于
答案 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']
此处*
可以匹配任意数量的字符,这些字符可能会导致基于文件名和所需输出的错误输出。