Python将文件复制到文件夹

时间:2015-07-26 20:52:25

标签: python

我目前正在尝试将文件从一个文件夹复制到另一个文件夹(不知道文件的名称)

然而,它不起作用,我似乎无法理解为什么。下面是代码和错误代码:

#!/usr/bin/python
import sys, os, time, shutil

path = '/home/images/'
files = os.listdir(path)
files.sort()
for f in files:
        src = path+f
        dst = '/USB/images/' +f
        shutil.move(src, dst)

错误:

Traceback (most recent call last):
  File "copy.py", line 10, in <module>
    shutil.move(dst, src)
  File "/usr/lib/python2.7/shutil.py", line 301, in move
    copy2(src, real_dst)
  File "/usr/lib/python2.7/shutil.py", line 130, in copy2
    copyfile(src, dst)
  File "/usr/lib/python2.7/shutil.py", line 82, in copyfile
    with open(src, 'rb') as fsrc:
IOError: [Errno 2] No such file or directory: '/USB/images/26-07-2015-18:06:22-01.jpg'

有人可以帮助我朝正确的方向发展吗?谢谢!

4 个答案:

答案 0 :(得分:2)

代码和错误消息似乎并不相互吻合。

代码建议你打电话

shutil.move(src, dst)

但错误表明你正在打电话

shutil.move(dst, src)

如果您正在执行后者,那么如果/USB/images/26-07-2015-18:06:22-01.jpg尚不存在,那么显然错误信息是有意义的。

您可能也无法在文件名中使用:个字符。 FAT(或派生)文件系统在(通常较小的)USB设备上是常见的。该文件系统类型不允许文件名中的以下任何字符:"/\*?<>|:

答案 1 :(得分:1)

应该是:

shutil.move(dst, src)

答案 2 :(得分:0)

看起来您的目的地目录不可写或不存在? 当你ls -l /USB/images时,你看到了什么?

顺便说一句,我以为你想复制? shutil.move将移动文件,而不是复制。

编辑:目标VFAT需要特殊文件转换

这个怎么样:

#!/usr/bin/python
import sys, os, time, shutil

path = '/home/images/'
files = os.listdir(path)
files.sort()
for f in files:
    f_dst = f.replace(':','_')
    src os.path.join(path, f)
    dst = os.path.join('/USB/images/', f_dst)
    shutil.move(src, dst)

答案 3 :(得分:-1)

使用与操作系统无关的函数os.path.join()有效地将文件名连接到文件夹路径。

#!/usr/bin/python
import sys, os, time, shutil

path = '/home/images/'

files = os.listdir(path)
files.sort()
for f in files:
  src = os.path.join(path, f)
  dst = os.path.join('/USB/images/', f)
  shutil.move(src, dst)