2013-01-05 204 views
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变量得到

回答

5

使用os.path.relpath()

print os.path.relpath(root, directory) 

其中directory是局部变量的名字已经出现在你的函数。 os.path.relpath()使得root成为相对于directory的路径。自您开始directory你走那将是myFolderBdirectory = "C:\\myfolderA"

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

起点,看看大卫比兹利谈话,“发电机诀窍系统程序员”。

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

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 
16

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

相关问题