获取文件夹名称

时间:2013-01-05 18:47:19

标签: python

我遍历文件夹中的一堆文件夹和文件,执行此操作:

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变量中获取

6 个答案:

答案 0 :(得分:17)

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

答案 1 :(得分:5)

使用os.path.relpath()

print os.path.relpath(root, directory)

其中directory是函数中已存在的局部变量名。 os.path.relpath()使root成为相对于directory的路径。自从directory开始散步时,myFolderB起点为directory = "C:\\myfolderA"

答案 2 :(得分: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

答案 3 :(得分:2)

>>> os.path.relpath('/myFolderA/myFolderB/myFile.MOD', '/myFolderA')
'myFolderB/myFile.MOD'

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

可以找到演示文稿中的幻灯片和源代码here