Python 执行RD命令的问题汇总(无效开关 - “Image“。)

 1、起因

删除文件夹的时经常无法删除

2、操作环境

pycharm 2020 社区版

python 3.7 (内置TK和OS)

3、代码

UI代码我一会贴,先看看python执行dos命令的语句。

  def implement(self):
        result = tkinter.messagebox.askokcancel(title='删除提示', message='删除后将丢失文件夹内的所有文件确定执行?')
        if str(result).lower()=="true":
            file_path=self.txt_root_path.GetValue() # 获取文件夹
            cmd="rd /s/q {0}".format(file_path) #dos命令
            print(cmd)
            exe_result= os.system(cmd)
            print(exe_result)

        #AdenMessageBox.show("implement成功") rd /s/q "D:/Image/TT/ASP8.png"
        pass

就这么一段代码搞出来好几几个问题。

第一乱码。​编辑

dos命令执行报错了。但是控制台乱码,因为windows的cmd默认编码是gbk因此得将pycharm编码改成gbk。

​编辑

之前讲过如何修改。

修改后 ​编辑

不乱码了但是报错。 不乱码了但是报错。 无效开关 - "Image"。

Z这个需要将 路径上加双引号。

rd /s/q "D:/Image/TT/ASP8.png"

这个是我第一次的操作结果无法删除。因为rd不支持删除文件。

UI代码:

import os
import tkinter
from tkinter import messagebox, filedialog

from framework.access.system.SysConfigAccess import SysConfigAccess
from framework.base.BaseFrame import BaseFrame
from framework.control.AdenButton import AdenButton
from framework.control.AdenCheckButton import AdenCheckButton
from framework.control.AdenEntry import AdenEntry
from framework.control.AdenLabel import AdenLabel
from framework.control.AdenMessageBox import AdenMessageBox
from framework.control.AdenTkPlugin import TkPlugin
from framework.model.system.SysConfigEntity import SysConfigEntity
from framework.pulgin.Tools import Tools


class ForceDeleteView(BaseFrame):

    def __init__(self):
        pass

    def getFrame(self, root, notebook):

        self.note_book = notebook
        self.frame = tkinter.Frame(root)
        self.frame.configure(background=TkPlugin.background())
        self.frame.columnconfigure(1, weight=1)  # 设置第2列自动适应Frame 需要sitcky布局配合
        self.frame.rowconfigure(8, weight=1)
        # 第1行
        # lable_sys_name = AdenLabel(self.frame, text="系统名称:")
        # lable_sys_name.grid(row=0, column=0, sticky=tkinter.E)
        # self.txt_sys_name = AdenEntry(self.frame)  # 邮件名称 通过自定义控件实现 读取值和获取值都可以通过控件获取
        # self.txt_sys_name.grid(row=0, column=1, sticky=TkPlugin.sticky_all(), padx="6", pady="6", columnspan=2)
        # 第1行
        label_mail_smtp_name = AdenLabel(self.frame, text="删除路径或文件:", bg=TkPlugin.background())
        label_mail_smtp_name.grid(row=0, column=0, sticky=tkinter.E)
        self.txt_root_path = AdenEntry(self.frame)
        self.txt_root_path.grid(row=0, column=1, sticky=TkPlugin.sticky_all(), padx="6", pady="6")
        btn_choose_path = AdenButton(self.frame, text="选择路径", width=8, command=lambda: self.choose_root_path("path"))
        btn_choose_path.grid(row=0, column=2, sticky=tkinter.W,  padx="2")
        # btn_choose_file = AdenButton(self.frame, text="选择文件", width=8, command=lambda: self.choose_root_path("file"))
        # btn_choose_file.grid(row=0, column=3, sticky=tkinter.W, padx="2")

        #最后一行也是第9行按钮操作
        btnSave = AdenButton(self.frame, text="执行", width=8, command=lambda: self.implement())
        btnSave.grid(row=9, column=0, sticky=tkinter.E, columnspan="2")
        btnDelete = AdenButton(self.frame, text="关闭窗体", bg="#D9534F", width=8, command=lambda: self.forget())
        btnDelete.grid(row=9, column=2, sticky=tkinter.E)
        return self.frame

    def choose_root_path(self,type):
        if type=="path":
            folderpath = filedialog.askdirectory()
            self.txt_root_path.SetValue(folderpath)
        else:
            file = filedialog.askopenfilename()
            self.txt_root_path.SetValue(file)
        pass

    def implement(self):
        result = tkinter.messagebox.askokcancel(title='删除提示', message='删除后将丢失文件夹内的所有文件确定执行?')
        if str(result).lower()=="true":
            file_path=self.txt_root_path.GetValue() # 获取文件夹
            cmd="rd /s/q {0}".format(file_path) #dos命令
            print(cmd)
            exe_result= os.system(cmd)
            print(exe_result)

        #AdenMessageBox.show("implement成功") rd /s/q "D:/Image/TT/ASP8.png"
        pass

    def forget(self):
        self.note_book.forget(self.frame)
        pass

界面:

​编辑

 1、起因

删除文件夹的时经常无法删除

2、操作环境

pycharm 2020 社区版

python 3.7 (内置TK和OS)

3、代码

UI代码我一会贴,先看看python执行dos命令的语句。

  def implement(self):
        result = tkinter.messagebox.askokcancel(title='删除提示', message='删除后将丢失文件夹内的所有文件确定执行?')
        if str(result).lower()=="true":
            file_path=self.txt_root_path.GetValue() # 获取文件夹
            cmd="rd /s/q {0}".format(file_path) #dos命令
            print(cmd)
            exe_result= os.system(cmd)
            print(exe_result)

        #AdenMessageBox.show("implement成功") rd /s/q "D:/Image/TT/ASP8.png"
        pass

就这么一段代码搞出来好几几个问题。

第一乱码。​编辑

dos命令执行报错了。但是控制台乱码,因为windows的cmd默认编码是gbk因此得将pycharm编码改成gbk。

​编辑

之前讲过如何修改。

修改后 ​编辑

不乱码了但是报错。 不乱码了但是报错。 无效开关 - "Image"。

Z这个需要将 路径上加双引号。

rd /s/q "D:/Image/TT/ASP8.png"

这个是我第一次的操作结果无法删除。因为rd不支持删除文件。

UI代码:

import os
import tkinter
from tkinter import messagebox, filedialog

from framework.access.system.SysConfigAccess import SysConfigAccess
from framework.base.BaseFrame import BaseFrame
from framework.control.AdenButton import AdenButton
from framework.control.AdenCheckButton import AdenCheckButton
from framework.control.AdenEntry import AdenEntry
from framework.control.AdenLabel import AdenLabel
from framework.control.AdenMessageBox import AdenMessageBox
from framework.control.AdenTkPlugin import TkPlugin
from framework.model.system.SysConfigEntity import SysConfigEntity
from framework.pulgin.Tools import Tools


class ForceDeleteView(BaseFrame):

    def __init__(self):
        pass

    def getFrame(self, root, notebook):

        self.note_book = notebook
        self.frame = tkinter.Frame(root)
        self.frame.configure(background=TkPlugin.background())
        self.frame.columnconfigure(1, weight=1)  # 设置第2列自动适应Frame 需要sitcky布局配合
        self.frame.rowconfigure(8, weight=1)
        # 第1行
        # lable_sys_name = AdenLabel(self.frame, text="系统名称:")
        # lable_sys_name.grid(row=0, column=0, sticky=tkinter.E)
        # self.txt_sys_name = AdenEntry(self.frame)  # 邮件名称 通过自定义控件实现 读取值和获取值都可以通过控件获取
        # self.txt_sys_name.grid(row=0, column=1, sticky=TkPlugin.sticky_all(), padx="6", pady="6", columnspan=2)
        # 第1行
        label_mail_smtp_name = AdenLabel(self.frame, text="删除路径或文件:", bg=TkPlugin.background())
        label_mail_smtp_name.grid(row=0, column=0, sticky=tkinter.E)
        self.txt_root_path = AdenEntry(self.frame)
        self.txt_root_path.grid(row=0, column=1, sticky=TkPlugin.sticky_all(), padx="6", pady="6")
        btn_choose_path = AdenButton(self.frame, text="选择路径", width=8, command=lambda: self.choose_root_path("path"))
        btn_choose_path.grid(row=0, column=2, sticky=tkinter.W,  padx="2")
        # btn_choose_file = AdenButton(self.frame, text="选择文件", width=8, command=lambda: self.choose_root_path("file"))
        # btn_choose_file.grid(row=0, column=3, sticky=tkinter.W, padx="2")

        #最后一行也是第9行按钮操作
        btnSave = AdenButton(self.frame, text="执行", width=8, command=lambda: self.implement())
        btnSave.grid(row=9, column=0, sticky=tkinter.E, columnspan="2")
        btnDelete = AdenButton(self.frame, text="关闭窗体", bg="#D9534F", width=8, command=lambda: self.forget())
        btnDelete.grid(row=9, column=2, sticky=tkinter.E)
        return self.frame

    def choose_root_path(self,type):
        if type=="path":
            folderpath = filedialog.askdirectory()
            self.txt_root_path.SetValue(folderpath)
        else:
            file = filedialog.askopenfilename()
            self.txt_root_path.SetValue(file)
        pass

    def implement(self):
        result = tkinter.messagebox.askokcancel(title='删除提示', message='删除后将丢失文件夹内的所有文件确定执行?')
        if str(result).lower()=="true":
            file_path=self.txt_root_path.GetValue() # 获取文件夹
            cmd="rd /s/q {0}".format(file_path) #dos命令
            print(cmd)
            exe_result= os.system(cmd)
            print(exe_result)

        #AdenMessageBox.show("implement成功") rd /s/q "D:/Image/TT/ASP8.png"
        pass

    def forget(self):
        self.note_book.forget(self.frame)
        pass

界面:

​编辑

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在