文件复制Python

文件复制Python,python,Python,我写了一个小的Python脚本,将数据从U盘复制到我的桌面上,但它不起作用 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

我写了一个小的Python脚本,将数据从U盘复制到我的桌面上,但它不起作用

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'
usberkannt
回溯(最近一次呼叫最后一次):
文件“/home/pi/Desktop/usbTest.py”,第12行,在
copy2(“/media/usb0/DCIM”+文件名,“/home/pi/Desktop/lh/”+文件名)
文件“/usr/lib/python3.4/shutil.py”,第244行,在copy2中
复制文件(src、dst、follow_symlinks=follow_symlinks)
文件“/usr/lib/python3.4/shutil.py”,第107行,在copyfile中
开放式(src,'rb')作为fsrc:
FileNotFoundError:[Errno 2]没有这样的文件或目录:'/media/usb0/DCIM/media/usb0/DCIM/20170318_120140.jpg'
在棒上,结构类似于/DMCI/examples.jpg


并且20170318_120140.jpg“存在”

您已经在迭代中的每个文件

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)
,因此您只将旧文件名作为新文件名,而不将整个路径作为新文件名。

为什么只有1个while循环就有2个while循环?此外,这将无休止地复制文件(覆盖?)
filename
变量包含文件的完整路径。您不必在
copy2()
函数中添加
/media/usb0/DCIM
来运行脚本endlessy您复制了这个:/media/usb0/DCIM/media/usb0/DCIM/edit:@kuro best me toit@FelixStepponat如果去掉
中断
,就可以去掉外部while循环。