検索

ホームページ  >  に質問  >  本文

python如何获取当前工程根目录

假设工程根目录为 d:/Project/

然后在 d:/Project/a/b/c/d/file.py 里使用 os.getcwd() 方法获取的是
d:/Project/a/b/c/d

现在我想获取 d:/Project 怎么做?

------------------------------------分割线---------------------------------
谢谢大家的热情回答,都怪我没有将问题说清楚,我的意思是获取当前工程的根目录,而获取根目录的函数可能在任何目录下

根目录既可能是 d:/Project/
也可能是 d:/Python/Project/
也可能是 d:/balabala/Python/Project/
因此逐级往上也是不可能找到的,我目前的方法是在根目录下放一个文件 file

然后这样:

def getSeparator():
    if 'Windows' in platform.system():
        separator = '\\'
    else:
        separator = '/'
    return separator

def findPath(file):
    o_path = os.getcwd()
    separator = getSeparator()
    str = o_path
    str = str.split(separator)
    while len(str) > 0:
        spath = separator.join(str)+separator+file
        leng = len(str)
        if os.path.exists(spath):
            return spath
        str.remove(str[leng-1])

但是这样也有一个问题,就是必须保证任何目录下不能有和根目录下file重名的文件

大家讲道理大家讲道理2881日前1574

全員に返信(6)返信します

  • 黄舟

    黄舟2017-04-17 17:48:09

    プロジェクト ディレクトリを絶対に移動しない限り、良い方法はありません。

    プロジェクト ディレクトリにモジュールを追加して現在のファイルのパスを取得project_dir = os.path.dirname(os.path.abspath(__file__))し、それを file.py にインポートします

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 17:48:09

    徐々に上へ
    os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.getcwd()))))

    返事
    0
  • 阿神

    阿神2017-04-17 17:48:09

    最終的に プロジェクト ファイルの下にある file.pyos.getcwd() を動員すると、結果 D:/Project が得られます。

    たとえば、このようなプロジェクト構造を作成した場合、それを D:/Project/a/b/c/d/file.py で直接呼び出す場合、当然のことながら、file.py ファイルが配置されている作業ディレクトリのパスが必要になります。

    D:/Project/__init__.py で呼び出された場合は、D:/Project/__init__.py が配置されている作業ディレクトリのパス、つまり D:/Project/ を取得します。

    os.getcwd()呼び出したファイルのパスによって得られる結果は異なります。


    プロジェクト ディレクトリの名前がわかっていて、プロジェクト ディレクトリに同じ名前のフォルダーが存在しないことを確認する場合は、正規表現を使用できます。

    リーリー

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 17:48:09

    リーリー

    返事
    0
  • 阿神

    阿神2017-04-17 17:48:09

    リーリー

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 17:48:09

    リーリー

    「」と「/」のディレクトリ区切り文字

    返事
    0
  • キャンセル返事