打开文件仅知道其名称的一部分
问题内容:
我目前正在读取文件,并使用以下行将数据导入其中:
# Read data from file.
data = np.loadtxt(join(mypath, 'file.data'), unpack=True)
知道变量的地方mypath
。问题在于,文件file.data
将随着时间的推移而更改,假设名称如下:
file_3453453.data
file_12324.data
file_987667.data
...
所以,我需要一种方法来告诉代码打开在具有类似名称路径的文件file*.data
,假设总是会有只有 一个
由路径名的文件。有办法做到python
吗?
问题答案:
您可以使用该glob
模块。它允许对文件名进行模式匹配,并完全满足您的要求
import glob
for fpath in glob.glob(mypath):
print fpath
例如,我有一个目录,其中包含名为google.xml,google.json和google.csv的文件。
我可以这样使用glob:
>>> import glob
>>> glob.glob('g*gle*')
['google.json', 'google.xml', 'google.csv']
请注意,glob
该fnmatch
模块使用模块,但具有更简单的界面,并且仅匹配路径而不是文件名。
您可以搜索相对路径,而不必使用os.path.join
。在上面的示例中,如果我切换到父目录并尝试匹配文件名,它将返回相对路径:
>>> import os
>>> import glob
>>> os.chdir('..')
>>> glob.glob('foo/google*')
['foo/google.json', 'foo/google.xml', 'foo/google.csv']