python - 文件是否存在通过匹配列表中的文件名
问题描述
我在文件夹和子文件夹中有文件。文件夹结构是这样的
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)
推荐阅读
- arrays - 如何将具有非标准索引的数组转换为 json?
- oracle-cloud-infrastructure - 线程“main”com.oracle.bmc.model.BmcException 中的异常:(400,InvalidParameter,false)令牌识别错误:':'
- typescript - 为什么我的 sinon 测试超时而不是失败?
- c# - 数据通过应用程序存储在计算机中,而不是智能手机中
- java - Hibernate envers 海关表
- android - 如何避免获得“android.os.TransactionTooLargeException”
- javascript - 我的传单地图中的 pointTolayer 问题
- python - 一个蜘蛛有 2 个不同的 URL 和 2 个使用 Scrapy 解析
- c# - 根据坐标放置对象,而不是 Unity 中的中心坐标
- module - 蓝牙模块断开 - arduino