2013-01-05 253 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(".",".."),你就完成了。

相關問題