无法将文件从一个位置复制到另一个位置

时间:2014-01-29 09:10:28

标签: python

代码

import os
import shutil
from os import listdir
source = os.listdir('C:\Users\surau\Documents\GUI_Screen')
destination = os.listdir('C:\Users\surau\Documents')
for files in source:
    if files.endswith('.txt'):
        shutil.copy2(source, destination)  
    break 

错误:

shutil.copy2(source, destination)  
File "D:\Python2.5\lib\shutil.py", line 89, in copy2
if os.path.isdir(dst):
File "D:\Python2.5\lib\ntpath.py", line 270, in isdir
st = os.stat(path)
TypeError: coercing to Unicode: need string or buffer, list found 

无法将文件源文件传送到目的地可以帮助我解决此问题。

2 个答案:

答案 0 :(得分:1)

destination shutil.copy2(source, destination)遇到问题 您无法通过listdir,因为它是list

listdir here

的文档

只需更改为destination = "C:\\Users\surau\\Documents\\"

shutil.copy2(source, destination)shutil.copy2(files, destination)

另请注意您的break缩进当前是在第一次迭代之后。

答案 1 :(得分:0)

  • 您正在迭代文件列表,但是您将自己的列表作为参数传递给复制函数。然而,复制函数需要'strings'或'buffer'作为参数而不是列表,如错误消息所示。
  • 您正在使用目标文件夹的内容作为目的地
  • 您在第一个文件
  • 之后中断了循环

我猜你在尝试的是:

import os
import shutil
from os import listdir
source = os.listdir('C:\Users\surau\Documents\GUI_Screen')
destination = 'C:\Users\surau\Documents'
for files in source:
    if files.endswith('.txt'):
        shutil.copy2(files, destination)  
        break