2017-12-13 22 views
-1

私はいくつかのファイルの名前を変更しようとしているが、それは私にこのエラーを与える:誰かがこのコードの何が間違っているか教えてもらえますか?

File "C:/Users/XhesiLocal/PycharmProjects/Prova/provaprova", line 19, in <module> os.rename(f, new_name) 
FileNotFoundError: [WinError 3] 

コード:

import os 

os.chdir('C:\\Users\XhesiLocal\Desktop\Analisi 2018') 
print(os.getcwd()) 

for f in os.listdir(): 
    f_name, f_ext = os.path.splitext(f) 

    f_nota, f_data = f_name.split('Lez') 
    f_nota = f_nota.strip()[4:] 
    f_data = f_name.split('_') 

    f_inutile, f_giorno, f_mese = f_data 
    f_giorno = f_giorno.strip() 

    new_name = '{} - {}/{}{}'.format(f_nota, f_giorno, f_mese, f_ext) 

    print(new_name) 
    os.rename(f, new_name) 
+3

はかなり自明に思えます。名前を変更しようとしたファイルが見つかりませんでした。 –

+3

あなたのchdirを確認してください。バックスラッシュを使用している場合は、二重バックスラッシュまたは一本のスラッシュを使用する必要があります。 https://stackoverflow.com/questions/17326337/python-os-chdir-is-modifying-the-passed-directory-name – locus2k

+1

名前を変更する直前に 'f'を印刷してみて実際のファイル名に置き換えます。 –

答えて

3

エラーは、ファイルが見つからなかったことを明らかです。ただし、ソースファイル名fは、os.listdir()から取られているため、にはがあります。

問題はここにある:

new_name = '{} - {}/{}{}'.format(f_nota, f_giorno, f_mese, f_ext) 

新しい名前にスラッシュが含まれている名前になります。したがって、スラッシュの前の部分は、ファイルが移動されるディレクトリになります。そのディレクトリが存在しない場合、os.renameは上記のエラーで失敗します。

例えばos.makedirsを使用して別のディレクトリにファイルを移動するためには、あなたは、ディレクトリが最初に存在することを確認する必要があります。

os.makedirs(os.dirname(new_name)) 
os.rename(f, new_name) 
+0

@ErixhensMukaようこそ! :)あなたの質問を解決済みとマークするには、[回答を受け入れる](https://meta.stackexchange.com/a/5235/141542)を覚えておいてください。 – poke

+0

申し訳ありませんが、私はそれを知らなかった!私は今それを受け入れた –

関連する問題