2017-06-13 8 views
-1

あるディレクトリから特定のファイル拡張子を持つファイルをコピーし、別のディレクトリに入れたいとします。私は検索してみましたが、同じことをやっているのと同じコードを見つけましたが、何もしていないようです。Pythonでファイルをコピーする

import shutil 
import os 
source = "/tmp/folder1/" 
destination = "/tmp/newfolder/" 
for files in source: 
    if files.endswith(".txt"): 
     shutil.move(files,destination) 
+0

同じファイルを2つの異なるディレクトリにコピーする場合は、これに加えて複数の宛先を持つことができますか? – gcmtb

答えて

0

私は問題があなたのfor-loopだと思います。実際には、フォルダ内のファイルをループする代わりに、文字列 "tmp/folder1 /"をループしています。あなたのfor-loopが文字列の文字(t、m、pなど)を通過しています。

元のフォルダ内のファイルのリストをルーピングします。その仕組みはここに記載されています:How do I list all files of a directory?

ここで、ファイル名を実行して、拡張子をテストし、表示したとおりに移動することができます。

+0

これはまさに私が得たものでした。リンクのおかげで、os.listdirが見つからず、これをソースに追加してうまく動作しました:-) – gcmtb

0

あなたの "for file in source"は、あなたの文字列 "source"(sourceはパスであることを知らず、彼は基本的なstrオブジェクトです)から別の文字の後に1文字を選びます。

あなたはos.listdir使用する必要があります:

import shutil 
import os 

source = "source/" 
destination = "dest/" 
for files in os.listdir(source): #list all files and directories 
    if os.path.isfile(os.path.join(source, files)): #is this a file 
     if files.endswith(".txt"): 
      shutil.move(os.path.join(source, files),destination) #move the file 

os.path.joinは(完全なパスを持っている)ディレクトリとファイル名を結合するために使用されています。

関連する問題