我正在编写一个程序,将文件从一个文件夹移动到另一个文件夹。有时我会在此过程中覆盖文件。但是,每当我运行文件时,都会询问“覆盖C:...(是/否/全部)”。我希望程序始终自动选择“全部”。先感谢您
import os
from tkinter import *
screen = Tk()
sourceplayers = 'C:\\Program Files (x86)\...\players'
destinationplayers = 'C:\\memory\Will\players'
sourceuserdata = ('C:\\\\Program Files (x86)\...\remote'
destinationuserdata = 'C:\\\\memory\\Will\\remote'
def copyout():
os.system ("""xcopy "%s" "%s" """ % (sourceplayers, destinationplayers))
os.system ("""xcopy "%s" "%s" """ % (sourceuserdata, destinationuserdata)) #save
def movein():
os.system ("""xcopy "%s" "%s" """ % (destinationplayers, sourceplayers))
os.system ("""xcopy "%s" "%s" """ % (destinationuserdata, sourceuserdata))
button = Button(screen, text="save", command=copyout)
button1 = Button(screen, text="overwrite", command=movein)
button.pack()
button1.pack()
screen.mainloop()
最佳答案
如果不能使用标志。您可以尝试使用subprocess.Popen写入标准输入,它应该完全满足您的要求:
from subprocess import PIPE,Popen
p = Popen(["xcopy",sourceplayers, destinationplayers],stdin=PIPE)
p.stdin.write("All\n")
p = Popen(["xcopy",sourceuserdata, destinationuserdata],stdin=PIPE)
p.stdin.write("All\n")
无论哪种方式,您都应该真正在os.system上使用subprocess模块,subprocess可以替代os.popen,os.system等。
如果
/y
适用于所有文件,请使用subprocess.check_call
:from subprocess import check_call
check_call(["xcopy","/y",sourceuserdata, destinationuserdata])
如果要在运行下一个命令之前返回前一个命令,请在每个调用之间插入一个
p.wait()
以等待该过程返回。如果要替换文件,则无需查看python之外,可以使用shutil.move:
from shutil import move
move(sourceplayers, destinationplayers)
关于python - 使用os模块覆盖python文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31359920/