python - 在 Python 中查找目录中的特定路径

标签 python path subdirectory os.system scandir

我怎样才能找到包含像 20170423 这样的日期的目录的路径?意思是,它可以是任何日期,但我想拥有那个特定的路径,直到我得到一个包含日期的文件夹。可能有几个包含该模式的子目录,但这是一种特殊情况,我需要提供更高的精度,例如文件夹的内容才能选择合适的。如果您喜欢特殊情况,请试一试,但对于我知道沿途只有一个文件夹包含该模式的情况,我开始的方式是:

 directPaths_list  =  [f.path for f in os.scandir( start ) if f.is_dir()   ] 

这给了我从开始文件夹到结束的所有路径。现在,我想返回其中包含日期模式的路径,特别是一个,让我们说它的 int(folder_name) 是 < datetime.datetime.today()

我可以想出一个粗略的解决方案,但是 SO 有一些人在想出简洁优雅的解决方案方面拥有非常好的技能,所以它是..有什么想法吗?谢谢!

例如,对于路径 start= C:/这将返回 C:\Users\abc\def\ghi\20170412

我在想这样的事情可能行得通:

[f.path for f in os.scandir('C:\\Users\\abc\\def\\ghi\\') if f.is_dir() and str(f.path).endswith(str(2),-2,-1) ] 

最佳答案

假设日期 20170423 是一个相应命名的文件。 然后你可以使用 os.walk() :

start = "C:\\Users\\abc\\"

for dirpath, dirnames, filenames in os.walk(start):
    for filename in filenames:
        if filename == "20170412":
            filename = os.path.join(dirpath, filename)
            print(filename)
            print(dirpath)

如果只有一个文件 C:\Users\abc\def\ghi\20170412 则上面的输出将是:

C:\Users\abc\def\ghi\20170412
C:\Users\abc\def\ghi\

您当然可以更改 if 语句以适应您是否要检查 filename.startswith("2017") 或其他任何内容。

警告:如果您执行start = "C:\\",那么这很可能需要很长的时间才能完成。因为它会遍历C盘的每一个目录。

您同样可以更改 for filename in filenames

for dirname in dirnames:
    if dirname == "20170412":
        dirname = os.path.join(dirpath, dirname )
        print(dirname)
        print(dirpath)

因此,如果 C:\Users\abc\def\ghi\20170412 实际上是一个目录,那么上面的输出将与之前相同:

C:\Users\abc\def\ghi\20170412
C:\Users\abc\def\ghi\

I was hoping for something more succinct

如果您称之为更简短的话,您仍然可以将其打包到列表理解中。

files = [os.path.join(dir, f) for dir, dirs, files in os.walk(start) for f in files if f == "20170412"]

关于python - 在 Python 中查找目录中的特定路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43553742/

相关文章:

linux - 给出一个路径的挂载点

php - openbase_dir 和子目录

android - android studio中布局的子文件夹

php - 如何要求 wordpress 登录以查看 wordpress 站点中的子目录?

python - 拆分字符串并将分隔符保留为拆分字符串 block 的一部分,而不是单独的列表元素

python - pandas:Excel输出中的颜色单元格取决于列值

python - 无法在 openshift 上安装 scipy

python - 如何修改 pandas 数据框中混合数据类型列中的数值?

java - 泽西嵌入@Path

c# - 在 silverlight 中淡入淡出路径?