Python GUI应用程序将文件一个位置复制到另一个位置

时间:2015-06-08 08:27:38

标签: python python-2.7

我是python的新手,但我必须创建一个简单的GUI应用程序来复制文件。这是我试过的。

from Tkinter import *
from  tkFileDialog import askopenfilenames
import shutil,os,glob

def callback():
    src = askopenfilenames()
    des = "C:\Users\Ravi\Desktop\des"
    sourceFiles = os.listdir(src)

    try:
        for fileName in sourceFiles:
            fullName = os.path.join(src, fileName)
            if (os.path.isfile(fullName)):
                shutil.copy(fullName, des)

    except Exception, e:
        print("Error %s" %e)

errmsg = 'Error!'
Button(text='File Open', command=callback).pack(fill=X)
mainloop()

当我运行此代码并尝试复制src中的1.txt文件时,出现以下错误。

The directory name is invalid: u'C:/Users/Ravi/Desktop/1.txt\\*.*'

我也尝试过这段代码来复制文件,但是没有结果。

for files in glob.iglob(os.path.join(src, '*.*')):
        shutil.copy(files, des)
        print("copied")

我不知道如何配置此应用程序。我只需要点击“文件打开”按钮并选择文件并将所选文件复制到我已硬编码的目标(des)(C:\Users\Ravi\Desktop\des)。请帮我纠正该代码或找到其他解决方案。

2 个答案:

答案 0 :(得分:2)

使用以下Python3代码。它工作正常。

import shutil,os

def callback():
  src = askopenfilename()

  des = 'C://Users//priyanka.rani//.spyder-py3'
  shutil.copy(src, des)


errmsg = 'Error!'
Button(text='File Open', command=callback).pack(fill=X)# calling function to add in Tkinter GUI
mainloop()

答案 1 :(得分:1)

完整的追溯会很有用,但我认为你的问题就在这一行:

sourceFiles = os.listdir(src)

tkinter对话框将

src设置为C:/Users/Ravi/Desktop/1.txt(一个文件,一个目录),并且您正在尝试对其进行目录列表:

C:/Users/Ravi/Desktop/1.txt\\*.*

编辑:我想你也会遇到以下问题。您似乎试图在这里连接两个文件名:

for fileName in sourceFiles:
    fullName = os.path.join(src, fileName)