首页 > 解决方案 > 将选定的文件复制到python中的目录

问题描述

我试图将使用对话框窗口选择的文件复制到相对目录。

from tkinter import filedialog
from tkinter import *
from shutil import copy2
import os


root = Tk()
root.withdraw()
source = filedialog.askopenfilename(
    initialdir="/", title="Select file", filetypes=(("HTML Files","*.html"), ("all files", "*.*")))
target = '/import'
print("Selected file " + source)
copy2(source, target)

选择文件后,它不会出现在目标目录中。

编辑:添加了第二个文件对话框来选择目标目录,现在它可以工作了。

from tkinter import filedialog 
from tkinter import *
from shutil import copy2
import time


root = Tk()
root.withdraw()
root.source = filedialog.askopenfilename(initialdir = "/",title = "Select source file",filetypes = (("html files",".html"),("all files",".*"))) 
print ("Selected file " + root.source)
time.sleep(1)
root.target = filedialog.askdirectory(initialdir = "/",title = "Select target directory")
print ("Selected directory " + root.target)
copy2(root.source, root.target, follow_symlinks=True)

标签: pythontkintershutil

解决方案


您应该更仔细地查看文档。您的目标应该是一个完整的文件目录,而不仅仅是'import'字符串。在您的示例中,这应该如下所示:

from tkinter import filedialog
from tkinter import *
from shutil import copy2
import os

root = Tk()
root.withdraw()

source = filedialog.askopenfilename(initialdir="/", title="Select file", filetypes=(("HTML Files","*.html"), ("all files", "*.*")))

target = 'import'
dir_parts = list(os.path.split(source))
target_dir = dir_parts[0] + target + '/' + dir_parts[1]

copy2(source, target_dir)

推荐阅读