3

フォルダー内の一連のフォルダーとファイルを反復処理し、次のようにします。

def get_files_in_directory(directory=rootDirectory):
    for root, dirs, files in os.walk(directory, topdown='true'):
        print("root %s dirs %s files %s" %(root, dirs, files));
        for file in files:
            ext = os.path.splitext(file)[-1].lower();
            if (ext == '.mod'):
                print(file);

ファイルを印刷するときに、それを含むディレクトリの相対名も印刷したいと思います。

だから私が持っているなら

C:\\myfolderA\\myFolderB\\myFile.MOD

私はただ得る

myFolderB

私はほしくない

C:\\myFolderA\\myFolderB 

もちろん、dir変数から取得できます

4

6 に答える 6

5

使用os.path.relpath():

print os.path.relpath(root, directory)

wheredirectoryは、関数に既に存在するローカル変数名です。に対する相対パスをos.path.relpath()作成します。そこから歩き始めたから の出発点になるrootdirectorydirectorymyFolderBdirectory = "C:\\myfolderA"

于 2013-01-05T18:51:00.680 に答える
4

file_path は、ファイルへのフル パスです。

folder_path = os.path.dirname(file_path)

folder_path は、ファイルを含むフォルダーへのフル パスになりました。

path,folder_name = os.path.split(folder_path)

folder_name は、folder_path の末尾にあるフォルダーの名前になりました。

print folder_name
于 2014-01-21T22:48:19.320 に答える
2
>>> os.path.relpath('/myFolderA/myFolderB/myFile.MOD', '/myFolderA')
'myFolderB/myFile.MOD'
于 2013-01-05T18:52:23.390 に答える
0

David Beazley の講演「システム プログラマーのためのジェネレーターの秘訣」をご覧ください。

プレゼンテーションのスライドとソース コードは、ここにあります。

于 2013-01-05T19:05:41.497 に答える
0

を試してみてos.path.relpath("myFolderA\\myFile.MOD", "c:\\")ください。os.path.abspathも重宝するかもしれません。

于 2013-01-05T18:50:52.370 に答える