用os-modu重写python文件

2024-10-03 17:23:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个程序,将文件从一个文件夹移动到另一个文件夹。有时我会在这个过程中重写文件。但是,每当我运行该文件时,都会询问我“覆盖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()

Tags: 文件import程序文件夹osfilesprogramscreen
3条回答

如果你不能使用标志。您可以尝试使用subprocess.Popen写入stdin,这应该完全符合您的要求:

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.popen公司, 操作系统等。。在

如果/y适用于所有文件,请使用subprocess.check_call

^{pr2}$

如果希望在运行下一个命令之前返回上一个命令,请在每个调用之间放置一个p.wait(),以等待进程返回。在

如果要替换文件,则无需查看python之外的内容,可以使用shutil.move

from shutil import move
move(sourceplayers, destinationplayers)

这是因为您正在使用系统调用来执行移动。您可以使用os.listdir组合列出源文件中的所有文件和目录,并使用shutil.move来执行移动操作。在

根据TechNet docs,看起来xcopy带有一个/y标志,该标志“禁止确认覆盖现有目标文件的提示。”

我想你会这样使用它:

os.system ("""xcopy "%s" "%s" /y""" % (sourceplayers, destinationplayers))

相关问题 更多 >