2017-03-22 55 views
-1

我写了一个小的Python脚本从USB记忆棒的数据复制到我的桌面,但它isn't工作...文件复制的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'变量包含文件的完整路径。你不必在'copy2()'函数中附加'/ media/usb0/DCIM' – kuro

+0

要无限运行脚本 –

回答

1

您已经ITER在

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

阿婷在每个文件现在,当您尝试访问"/media/usb0/DCIM"+filename它将包含第一部分的两倍,因为你可以在你的错误看到:仅仅使用'/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)所以你只有旧的文件名作为新的文件名,而不是整个路径作为新的文件名。