簡體   English   中英

目錄路徑作為用戶輸入,但一次用於多個文件夾

[英]directory path as user input, but for multiple folders at once

(使用Python 3.4)因此我有一個包含1500個文件夾的大文件夾。 我想分析每個文件夾內2層的數據。 每個文件夾的名稱具有以下格式:

YYMMDD_XXXXX_####X其中X是字母,而#是數字。 我真正關心的只是####X部分,它是獨一無二的。 在該文件夾內是一個名為"infosite-####X"的文件夾(與父文件夾相同的####X ),在該文件夾內是一個名為"YYMMDD_XXXXX_####X_infosite.rst"rst文件(也有相同的ID),其中包含我想要的數據。

我已經建立了用於數據分析的代碼,但是當每個目錄具有唯一的5mer序列時,我不想鍵入整個目錄。

現在,我的目錄只有一個文件,我想對其進行硬編碼,並像這樣進行操作:

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")

但這實際上是不允許的,而且我看不到如何將glob.glob與它一起使用。

只需將您創建的表達式傳遞給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)

還要注意,全局模式的創建可能更具可讀性,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM