我目前正在尝试将文件从一个文件夹复制到另一个文件夹(不知道文件的名称)
然而,它不起作用,我似乎无法理解为什么。下面是代码和错误代码:
#!/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'
有人可以帮助我朝正确的方向发展吗?谢谢!
答案 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
时,你看到了什么?
编辑:目标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)