目录路径作为用户输入,但一次用于多个文件夹

时间:2016-05-02 18:04:52

标签: python

(使用Python 3.4) 所以我有一个包含1500个文件夹的大文件夹。我想分析每个文件夹中2层的数据。每个文件夹的名称都具有以下格式:

YYMMDD_XXXXX_####X其中X是一个字母,#是一个数字。我真正关心的是####X部分,它是独一无二的。在这个文件夹里面是一个名为"infosite-####X"的文件夹(与父文件夹相同的####X),在这个文件夹里面是一个名为rst的{​​{1}}文件(也是同一个ID)有我想要的数据。

我已经构建了用于数据分析的代码,但是当每个目录具有唯一的5mer序列时,我不想输出整个目录。

现在我的目录中包含一个我想要硬编码的文件,并且这样做:

"YYMMDD_XXXXX_####X_infosite.rst"

理想情况下我喜欢

之类的东西
import os
os.chdir("Z:/RunLog/160428_HV2VY_1892L/infosite-1892L")

user_input = input("Enter name of file: ")
assert os.path.exists(user_input + ".rst"), "I did not find the file at, " +        str(user_input)
f = open(user_input + ".rst" ,'r+')
print("Hooray we found your file!")

但这并非真的允许,而且我也不知道如何使用os.chdir("Z:/RunLog/*" + user_input + "/*" user_input + "/*" user_input + ".rst")

1 个答案:

答案 0 :(得分:1)

只需将您创建的表达式传递给glob(),然后使用结果,如下所示:

import glob
import os

user_input = input("ID of file: ")
for filename in glob.glob(
    "Z:/RunLog/*" + user_input + "/*" user_input + "/*" user_input + "_infosite.rst"):
    f = open(filename)
    ...

或者,如果您不准备处理多个匹配文件:

user_input = input("ID of file: ")
filenames = glob.glob(
    "Z:/RunLog/*" + user_input + "/*" user_input + "/*" user_input + "_infosite.rst")
filename = filenames[0]
f = open(filename)

另请注意,glob模式的创建可能更具可读性:

pattern = 'Z:/RunLog/*{0}/*{0}/*{0}_infosite.rst'.format(user_input)
filenames = glob.glob(pattern)