Скопируйте выбранный файл в каталог в Python - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь скопировать файл, выбранный с помощью диалогового окна, в относительный каталог.

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)

1 Ответ

0 голосов
/ 30 января 2019

Вы должны просто проверить документацию более тщательно.Ваша цель должна быть полной файловой директорией, а не просто строкой '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)
...