2017-11-10 17 views
-1

ファイル名に示されているそれぞれのグループに従って大量のファイルをフォルダに分類するプログラムを作成しようとしています。私はフォローインコードを書いたが、私がそれを実行すると、ファイルが指定されたパスにあってもエラーが見つからないというエラーが出る。私は、何が間違っているかを理解する助けに感謝します。ここでos.renameにファイルが見つかりませんでした。

import os 

old_dir = '/Users/User/Desktop/MyFolder' 

for f in os.listdir(old_dir): 
    file_name, file_ext = os.path.splitext(f) 
    file_name.split('-') 

    split_file_name = file_name.split('-') 

    new_dir = os.path.join(old_dir, 
          '-'.join(split_file_name[:3]), 
          split_file_name[5], 
          f) 

    os.rename(os.path.join(old_dir, f), new_dir) 

は誤りです:新しい名前が存在しないディレクトリ内のファイル名であることを起こる場合

Traceback (most recent call last): 
    File "/Users/User/Documents/Sort Files into Folders/Sort Files into Folders.py", line 19, in <module> 
    os.rename(os.path.join(old_dir, f), new_dir) 
FileNotFoundError: [Errno 2] No such file or directory: '/Users/User/Desktop/MyFolder/AHA35-3_30x1_12-31-7d-g1a1-ArmPro.jpg' -> '/Users/User/Desktop/MyFolder/AHA35-3_30x1_12-31/ArmPro/AHA35-3_30x1_12-31-7d-g1a1-ArmPro.jpg 
+2

古い名前と新しい名前を印刷してみたことがありますか?それはすべてのファイルで失敗するのでしょうか? –

+0

はい、古い名前と新しい名前は期待通りです。それはすべてのファイルで失敗します –

+0

@Evertいいえ、私はそれらを作成しようとしています –

答えて

1

os.renameは自動的に、新しいディレクトリ(再帰的に)を作成しません。

あなたは(Pythonの3)を使用することができ、最初のディレクトリを作成するには、次の

os.makedirs(dirname, exist_ok=True) 

のdirnameは(既存またはない)サブディレクトリを含めることができる場所。


また、新しいディレクトリと中間ディレクトリを処理できるos.renamesを使用してください。 From the documentation

Recursive directory or file renaming function. Works like rename(), except creation of any intermediate directories needed to make the new pathname good is attempted first

関連する問題