簡體   English   中英

獲取當前目錄python中的所有文件和目錄

[英]Get all files and directories in current directory python

我正在編寫一個python軟件包管理器,並且正在制作它,以便它根據當前目錄中的程序/軟件包生成__all__對象,但我也想忽略所有非軟件包。 即,如果我具有以下目錄結構:

project
|------__init__.py
|------prog1.py
|------package
    |------__init__.py
    |------prog2.py
|------resources
    |------ping.png

我希望__all__變量如下:

__all__ = ['prog1', 'package']

我嘗試過各種方法,但老實說,我不知道自己在做什么。

這是我上次嘗試的內容:

import os
from os import path


def config_all(directory):
    __all__ = []
    directory = path.abspath(directory)
    for root, dirs, files in os.walk(directory, topdown=False):
        for d in dirs:
            os.chdir("/czar/".join(path.abspath(d).rsplit("/", 1)))
            v = list(os.walk('.'))[0][2]
            if "__init__.py" in v:
                __all__.append(d)
            for i in v:
                while i in __all__:
                    __all__.remove(i)
            os.chdir('..')
        for f in files:
            __all__.append(path.join(root, f).rsplit("/", 1)[1].rsplit(".", 1)[0])
    return __all__

__all__ = config_all('czar/')
print(__all__)

您要使用給定目錄的所有.py文件和所有帶有__init__.py文件的目錄,請使用glob

def config_all(directory):
    result = []
    for filename in glob.iglob(os.path.join(directory, '*', '__init__.py')):
        result.append(os.path.basename(os.path.dirname(filename))
    for filename in glob.iglob(os.path.join(directory, '*.py'):
        result.append(os.path.splitext(os.path.basename(filename))[0])
    return result

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM