2017-03-22 9 views
-1

私が働いてisn't私のデスクトップにUSBスティックからデータをコピーするために、小さなPythonスクリプト書いたが、それ...ファイルコピーのPython

while True: 

    while True: 

     if os.path.ismount("/media/usb0"): 

      print ("USB erkannt") 

      for filenames in glob("/media/usb0/DCIM/*.jpg"): 

       shutil.copy2("/media/usb0/DCIM"+filenames, "/home/pi/Desktop/lh/"+filenames) 

      break 

     sleep(1) 

    sleep(1) 

そして、ここでは繰り返しである:

USB erkannt 
Traceback (most recent call last): 
    File "/home/pi/Desktop/usbTest.py", line 12, in <module> 
    shutil.copy2("/media/usb0/DCIM"+filenames, "/home/pi/Desktop/lh/"+filenames) 
    File "/usr/lib/python3.4/shutil.py", line 244, in copy2 
    copyfile(src, dst, follow_symlinks=follow_symlinks) 
    File "/usr/lib/python3.4/shutil.py", line 107, in copyfile 
    with open(src, 'rb') as fsrc: 
FileNotFoundError: [Errno 2] No such file or directory: '/media/usb0/DCIM/media/usb0/DCIM/20170318_120140.jpg' 

スティック上の構造は/DMCI/examples.jpg

そして20170318_120140.jpgようなもので」あなたはすでに

+2

1つしか実行しないときに2 whileループがあるのはなぜですか?また、これはファイルを無限にコピーします(?を上書きします)。 –

+0

'filename'変数にはファイルの絶対パスが入ります。あなたは '/ media/usb0/DCIM'を' copy2() 'に追加する必要はありません – kuro

+0

スクリプトを無限に実行するには –

答えて

1

が存在するITERあなたがあなたのエラーで見ることができるように、それは、二回最初の部分が含まれています"/media/usb0/DCIM"+filenameにアクセスしようとすると、

for filename in glob("/media/usb0/DCIM/*.jpg"): 

内のすべてのファイルをオーバーating:'/media/usb0/DCIM/media/usb0/DCIM/20170318_120140.jpg'

はちょうど

for filename in glob("/media/usb0/DCIM/*.jpg"): 
    shutil.copy2(filename, "/home/pi/Desktop/lh/"+filename) 
を使用してみてください

また、"/home/pi/Desktop/lh/" + os.path.basename(filename)がほしいと思うかもしれません。古いファイル名は新しいファイル名であり、新しいファイル名としてはパス全体ではありません。

関連する問題