簡體   English   中英

文件是否存在通過匹配列表中的文件名

[英]file exists or not through matching filename in list

我在文件夾和子文件夾中有文件。 文件夾結構是這樣的

2020(folder)
-01(sub folder)
--14(sub-sub folder)
----abc1-2020-01-14.csv
----abc2-2020-01-14.csv
-02(subfolder in 2020)
--17(sub-sub folder in 02)
----abc1-2020-02-17.csv
----abc4-2020-02-17.csv

我有文件名列表。 li = ['abc1','abc2','abc3','abc4']

我想知道這些文件是否存在於目錄中。 每個子目錄都應該包含所有 4 個文件。 如果不是,則代碼必須返回不存在特定文件的路徑。

import glob
BASE_PATH = r'2020/'
allin= BASE_PATH + '/*/*'
li = ['abc1','abc2','abc3','abc4']
print('Names of files:')
for name in glob.glob(allin):
    print('\t', name)
    for k in li:
        try:
            f = open(r"C:\\Users\\Karar\\ProjectFiles\\scripts\\"+ name + "\\" + k + "*.csv")
        except IOError:
            print(name+k+ ".csv""File not present")

print name is returning 2020\01\14 and 2020\02\17

我很難用開放方法在這里給出路徑。 另請注意,我存儲在文件夾中的文件名最后有日期,因此需要在路徑中解決該問題,以便在文件名末尾的任何日期,如果文件夾中包含列表中的文件名,那么什么都不做,但如果文件是在子文件夾中丟失,然后打印路徑中不存在的 EXCEPT 文件。 請注意,每個文件夾必須攜帶所有 4 個文件,否則返回除外。

一種可能的方法:

import glob, os.path
base = '2020'
li = ['abc1','abc2','abc3','abc4']
for dirname in glob.glob(base + '/*/*'):
  year, month, day = dirname.split('/')
  for prefix in li:
      filename = "{}/{}.csv".format(dirname, '-'.join(prefix, year, month, day))
      if not os.path.exists(filename):
          print(filename)

暫無
暫無

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

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