2017-07-16 38 views
0

我那裏面有父文件夾和子夫婦夾一個子文件夾名稱重命名文件的上一級

parent: 
--subfolder1: 
-----folderinsidesubfolder1: 
-------file.tsv 
--subfolder2: 
-----folderinsidesubfolder2: 
-------file.tsv 

我所試圖做的是改變一個水平之上,與文件夾名稱file.tsv是subfolder1,subfolder2這樣

parent: 
    --subfolder1: 
    -----folderinsidesubfolder1: 
    -------subfolder1.tsv 
    --subfolder2: 
    -----folderinsidesubfolder2: 
    -------subfolder2.tsv 

代碼:

from os import walk, path, rename 
for dirpath, _, files in walk('pathto/parent'): 
    for f in files: 
     if f.endswith(".tsv"): 
      print rename(f, dirpath[-2]+ '.tsv') 

錯誤:

OSError: [Errno 2] No such file or directory 

這是做正確的方式?

+1

'dirpath'只是一個字符串,你需要把它分解'os.path中。拆分(dirpath)[ - 2]',但你是不是在文件的目錄中工作,所以你需要'os.path.join()''的pathto/parent'用'dirpath' +'新filename'。 – AChampion

+0

@AChampion是這樣的嗎? '(F,path.join(dirpath,(dirpath)[ - 2] + '.tsv格式'))'?我想這仍然得到同樣的錯誤'OSERROR:[錯誤2]沒有這樣的文件或directory' – sbradbio

回答

1

os.path.split()創建一個頭部和尾部,所以你將需要劃分兩次獲得祖父母目錄,例如:

import os 
for dirpath, _, files in os.walk('pathto/parent'): 
    for f in files: 
     if f.endswith('.tsv'): 
      os.rename(os.path.join(dirpath, f), os.path.join(dirpath, os.path.split(os.path.split(dirpath)[0])[1] + '.tsv')) 
+0

這個作品,謝謝你的解釋 – sbradbio

相關問題