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

17

使用os.path.relpath(".",".."),你就完成了。

于 2014-07-28T10:55:33.903 回答
5

使用os.path.relpath()

print os.path.relpath(root, directory)

directory函数中已经存在的局部变量名称在哪里。os.path.relpath()创建root一个相对于 的路径directory。既然你从那里开始你的步行,directory那将是myFolderB一个起点directory = "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

os.path.relpath("myFolderA\\myFile.MOD", "c:\\"). os.path.abspath也可能派上用场。

于 2013-01-05T18:50:52.370 回答
0

看看 David Beazley 的演讲,“系统程序员的生成器技巧”。

可以在此处找到演示文稿中的幻灯片和源代码。

于 2013-01-05T19:05:41.497 回答