(使用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")
。
答案 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)