2017-05-11 37 views
1

gifファイルとイメージファイルを認識し整理するためのコードを書きました。 cdirは、プログラムが整理するはずのディレクトリを指します。それが実行されると、フォルダ 'Gifs'と 'Images'が同じディレクトリに作成されます。 FIRST.gif、SECOND.gifとTHIRD.jpgShutil Pythonモジュールでファイルを移動しようとしたときにFileNotFoundエラーが発生しました

しかし、私は次のエラーを取得する:

import shutil, os 

gifext = ['.gif', 'gifv'] 
picext = ['.png', '.jpg'] 

for file in files: 
    if file.endswith(tuple(gifext)): 
     if not os.path.exists(cdir+'\Gifs'): 
      os.makedirs(cdir + '\Gifs') 
     shutil.move(cdir + file, cdir + '\Gifs') 

    elif file.endswith(tuple(picext)): 
     if not os.path.exists(cdir+'\Images'): 
      os.makedirs(cdir + '\Images') 
     shutil.move(cdir + file, cdir + '\Images') 

ディレクトリにはファイルが含まれてい

File "test.py", line 16 
    shutil.move(cdir + file, cdir + '\Gifs') 
    File "C:\Users\stavr\AppData\Local\Programs\Python\Python36-32\lib\shutil.py", line 552, in move 
    copy_function(src, real_dst) 
    File "C:\Users\stavr\AppData\Local\Programs\Python\Python36-32\lib\shutil.py", line 251, in copy2 
    copyfile(src, dst, follow_symlinks=follow_symlinks) 
    File "C:\Users\stavr\AppData\Local\Programs\Python\Python36-32\lib\shutil.py", line 114, in copyfile 
    with open(src, 'rb') as fsrc: 
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\stavr\\Desktop\\testFIRST.gif' 
+0

この質問はdownvoteに値するものではありません。ええ、手元にある問題は、熟練したPythonistasにとってはやや些細なことです。しかし、*質問*は、**例示的な**の短すぎるものではありません:明確な問題の声明、期待される結果/実際の結果、完全な、自己完結した実行可能なコード、完全なトレースバック。 –

+0

あなたの返事をありがとう! – Smich

答えて

2

filesは、ファイルの名前のみが含まれていますディレクトリに保存します。 cdirはあなたがfilesの要素でcdirを連結するとき、あなたが潜在的に無効なパスを取得し、最後にバックスラッシュを持っているので、しません。あなたがいることを追加する必要がありますので

"C:\stuff\my\path" + "file_name.png" 
# equals 
"C:\stuff\my\pathfile_name.png" 

後者は、あなたが何を望むかは明らかではありません何とかcdirにバックスラッシュ、多分次のように:

if not cdir.endswith("\\"): 
    cdir += "\\" 
+1

'cdir.endswith(os.sep):'がさらに優れているか、 'os.path.join'と生の文字列を使うことを提案します。 –

1

あなたのファイルのパスが正しくありません。パスセパレータがありません。

FileNotFoundError: [WinError 2] The system cannot find the file specified: 'C:\\Users\\stavr\\Desktop\\testFIRST.gif' 

あなたが追加することによってこの問題を解決することができます」:ディレクトリ「テスト」ウントファイル「FIRST.gif」との間のパスに不足しているエラーレポート「\」がある後

shutil.move(os.path.join(cdir, file), os.path.join(cdir, 'Gifs')) 
+1

パスを手作業で連結する代わりに、代わりに['os.path.join'](https://docs.python.org/3/library/os.path.html#os.path.join)を使用する必要があります。これにより、最初にこのエラーが防止され、ポータブルコードが生成されます。 –

0

\」あなたはこのようなパスに置く:

Enter path to the directory: C:\Users\stavr\Desktop\test\ 

OR

置き換える:

をところで

shutil.move(os.getcwd() + '/' + file, cdir + '\Gifs') 

:によって

shutil.move(cdir + file, cdir + '\Gifs') 

私はここだと思います "" "gifv"の前に行方不明です

gifext = ['.gif', 'gifv'] 
関連する問題