在Python中找到特定的路径



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

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

这为我提供了从开始文件夹到末端的所有路径。现在,我想返回具有日期模式的路径,尤其是一个路径,它可以说是谁的int(folder_name(是<dateTime.dateTime.today((

我可以提出一个粗糙的解决方案,但是在提出Succint Elegant Solutions方面具有很好技能的人也是如此,所以这是..有什么想法吗?谢谢!

例如,对于路径开始= 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:Usersabcdefghi20170412,则以上将输出:

C:Usersabcdefghi20170412
C:Usersabcdefghi

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

警告:如果您执行start = "C:\",那么很可能会花费 looong完成的时间。,因为它将通过C驱动器上的每个目录运行。

您可以平均更改for filename in filenames

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

因此,如果C:Usersabcdefghi20170412实际上是一个目录,则以上将输出与以前相同的输出:

C:Usersabcdefghi20170412
C:Usersabcdefghi

我希望有更简洁的东西

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

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

相关内容

  • 没有找到相关文章

最新更新