我是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
)。请帮我纠正该代码或找到其他解决方案。
答案 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)
src
设置为C:/Users/Ravi/Desktop/1.txt
(一个文件,不一个目录),并且您正在尝试对其进行目录列表:
C:/Users/Ravi/Desktop/1.txt\\*.*
编辑:我想你也会遇到以下问题。您似乎试图在这里连接两个文件名:
for fileName in sourceFiles:
fullName = os.path.join(src, fileName)