不要使用.format()

时间:2017-11-09 10:43:38

标签: python os.system

我尝试将os.system().format()用于隐藏图像存档的程序。我不明白为什么OUTPUT.jpg没有保存在当前目录中。另外,我有一个GUI,它很容易使用。但是无法获得输出文件。它并不只是创造。拜托,你能帮忙吗?

这是一段代码:

import tkinter as tk
import tkinter.filedialog as f
import os


def access(event):
    global arch
    arch = f.askopenfilename()
    txt['text'] = 'Choose a picture'
    btn_1.destroy()
    btn_2.grid(row=1, column=1)

def access2(event):
    global img
    img = f.askopenfilename()
    btn_2.destroy()
    os.system('copy {} + {} {}/OUTPUT.jpg'.format(img, arch, os.getcwd()))
    txt['text'] = 'Ready.'

root = tk.Tk()

txt = tk.Label(root, text='Choose archive')

btn_1 = tk.Button(root, text='Выбрать')
btn_2 = tk.Button(root, text='Выбрать')

txt.grid(row=0, column=1)
btn_1.grid(row=1, column=1)

btn_1.bind('<Button-1>', access)
btn_2.bind('<Button-1>', access2)

root.mainloop()

1 个答案:

答案 0 :(得分:1)

使用shutil.copyfileobj(不依赖于os)

替换:

os.system('copy {} + {} {}/OUTPUT.jpg'.format(img, arch, os.getcwd()))

到:

import shutil

destination = open('{}/OUTPUT.jpg'.format(os.getcwd()),'wb')
shutil.copyfileobj(open(img, 'rb'), destination)
shutil.copyfileobj(open(arch,'rb'), destination)
destination.close()