【问题标题】:Find absolute path of specific upper directory查找特定上层目录的绝对路径
【发布时间】:2017-05-16 16:00:34
【问题描述】:

目标:我正在尝试查找特定文件名的绝对路径。

场景:我的脚本在某个(伟大的伟大)父目录中执行,而我的文件位于同一个(伟大的...)父目录中的某个地方。

问题:

E:
├───Directory
│   └───Sub Directory
└───Grandparent Folder
    ├───Parent Directory
    │   └───script.py
    └───Other Parent Directory
        └───MyFile.txt
  1. 伟大的父目录经常被移动。所以父目录的绝对路径是未知的。

  2. 脚本在伟大的父目录中移动了很多,并改变了该目录中的文件级别,所以我不能只使用'../../..' 来到达父目录。

  3. 我要查找的文件在伟大的父目录中移动了很多。

一旦我有了父目录的绝对路径,我就可以在os.walk() 周围找到我的文件。

尝试:我在下面的工作,但我不得不想象这是一个足够常见的问题,有一个我不知道的内置 os 命令。

import os

parent_folder = 'Grandparent Folder'
search_file = 'MyFile.txt'

# Get absolute path of grandparent directory.
current_path = os.getcwd()
parent_path = current_path.split(parent_folder)[0] + parent_folder

# os.walk() from grandparent down until file is found.
filepath= ''
for root, dirs, files in os.walk(parent_path):
    for file in files:
        if file == search_file:
            filepath = '\\'.join([root, file])

【问题讨论】:

  • 当前工作目录和脚本目录不必相同。您希望根据哪个进行搜索?
  • 脚本目录
  • os.getcwd()返回工作目录,使用__file__获取脚本目录。

标签: python python-3.x file os.walk


【解决方案1】:

尝试使用 pythons glob 模块查找路径名。您可以在官方文档中找到详细信息。这样即使目录移动了,每次都能找到路径。

【讨论】:

  • 这能帮助我找到我的祖父母目录,还是在我拥有父目录后只找到文件?
  • 只要你知道脚本名或文件名就可以用它来查找(这些应该是唯一的,否则可能有多个匹配项)
  • @MichaelMolter:您也可以结合使用 fnmatch() 和 glob() 参考这个 SO 问题 - stackoverflow.com/questions/14798220/… 找到文件后,您可以返回工作目录。
  • 我认为这种方法不能解决问题的核心。一旦我找到父目录,这是一种更简单的获取特定文件的方法,但它绝对不能帮助我找到父目录?
猜你喜欢
  • 2013-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-21
  • 1970-01-01
  • 2020-08-23
  • 1970-01-01
相关资源
最近更新 更多