39590

[code]

    #! python3
    #デスクトップにある特定のファイルをコピーしてフォルダに移動する
    
    import shutil, os
    os.chdir('C:\\Users\\sugimoto\\Desktop\\atom作業フォルダ')
    for foldername, subfolders, filenames in os.walk('.'):
        for filename in filenames:
            if filename.endswith('.txt') or filename.endswith('.png') or filename.endswith('.py'):
                shutil.copy(filename, '..\\foo')
            else:
                print('該当するファイルが見つかりませんでした。')
    
[/code]

このコードは.txtファイルと.pngファイルだけをshutil.copy()でコピーするコードです。  
しかしこれを実行すると、No such file or directory: 'third-
party.txt'（そんなファイルはありません。）というエラーがでてしまいます。

しかしながら

[code]

    import os
    os.chdir('C:\\Users\\sugimoto\\Desktop\\atom作業フォルダ')
    folder = os.getcwd()
    for foldername, subfolders, filenames in os.walk(folder):
        for filename in  filenames:    
            print('ファイル: ' + filename)
    
[/code]

↑のコードを実行すると確かに大量のファイルが表示されるのです。ファイルは存在するのに、ファイルが存在しないというエラーがでてしまいます。これは何が原因なのでしょうか？


CC BY-SA 3.0
2017-11-15T06:47:26.833
39589
2017-11-15T07:29:46.963
26076
question
python
os.walk()、shutilcopy()でエラーが発生する


フォルダ階層の途中がコピー元のファイル名として欠けているのでしょう。`shutil.copy` の呼び出しは次のようになるでしょう。

[code]

    shutil.copy(os.path.join(foldername, filename), '..\\foo')
    
[/code]


CC BY-SA 3.0
2017-11-15T07:29:46.963
39590
2017-11-15T07:29:46.963
15325
39589
answer