2017-07-16 11 views
0

私はその下にサブフォルダの親フォルダとカップルを持っている私がやろうとしていますどのようなサブフォルダ名を持つファイルを1つのレベルアップ

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

の名前を変更すると、その上のフォルダ名を1レベルでfile.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') 

エラー:

subfolder1、この

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

コードのようなsubfolder2です

OSError: [Errno 2] No such file or directory 

これは正しい方法ですか?

+1

は 'dirpath'は単なる文字列では、'はos.pathそれを分割する必要があります。 split(dirpath)[ - 2] 'しかし、あなたはファイルのディレクトリで作業していないので、' pathpath/parent'に 'dirpath' +' new filename'を 'os.path.join()'する必要があります。 – AChampion

+0

@AChampionこれって何? '(f、path.join(dirpath、(dirpath)[ - 2] + '.tsv'))'?私はこれでも同じエラーを取得しようとしました 'OSError:[Errno 2]そのようなファイルやディレクトリはありません ' – 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

関連する問題