【问题标题】:If in a function not working if Boolean value is false如果布尔值为 false,函数不工作
【发布时间】:2022-12-10 22:14:33
【问题描述】:

海洛

由于 Stackoverflow,我是 Python 的新手并且学到了很多东西,但目前我被困在这个简单的任务中,我确信我会自己解决它但花了几个小时环顾四周。

我有一个带按钮的 Tkinter GUI,如果按下它,它将在特定文件路径中查找这样的名称,如果它找到“检查更新”,它将运行它,否则它不会按预期执行任何操作。

import tkinter as tk
import os

root = tk.Tk()

button = tk.Button(root, text="Open", height=1, width=25, borderwidth="2", command=lambda: openupdt())
button.grid()

def openupdt():
    os.startfile(r"C://ProgramData//Microsoft//Windows//Start Menu//Programs//Java//Check For Updates")

root.mainloop()

在这里我尝试使用 IF 语句,但似乎我做错了什么。如果在这样的路径中没有找到文件,我希望它打印消息或执行指示的操作。

def openupdt():
    os.startfile(r"C://ProgramData//Microsoft//Windows//Start Menu//Programs//Java//Check For Updates")
    if openupdt == False:
        print("No such file")

给我一个错误“系统找不到指定的文件:”就好像它完全忽略了 IF 语句

谢谢你。

【问题讨论】:

  • 名为openupdt 的函数定义中的条件if openupdt == False: 没有意义。那应该做什么?在任何情况下,您都可以使用try ... except 来捕获尝试打开文件时发生的错误。

标签: python


【解决方案1】:

您应该首先检查文件是否存在,然后使用os.startfile

尝试类似的东西:

if os.path.isfile("your_path_to_file"):
    os.startfile("your_path_to_file")
else:
   print("No such file")

【讨论】:

    【解决方案2】:

    如果您想检查是否存在具有特定路径的内容,请使用返回truefalseos.path.exists。在你的情况下,它可能像

    import os
    
    def openupdt():
        if os.path.exists("/your/path"):
            do_something()
        else:
            print("No such file or directory")
    

    您代码中的主要问题是,在 if 语句中,您将 Falseopenupdt 进行了比较,但您的函数名称是 openupdt。您实际上是在将函数与 bool 值进行比较,这是不正确的。最好像我上面提供的那样使用os.path.exists,这对你有用。

    【讨论】:

      【解决方案3】:

      最主要的是你应该使用 try-except for os.startfile()。此外,您的 if 语句正在检查函数而不是变量,这使得比较不可行。另外,您使用的是原始字符串文字,因此不需要额外的斜杠。

      def openupdt():
          try:
              os.startfile(r"C:ProgramDataMicrosoftWindowsStart MenuProgramsJavaCheck For Updates")
          except:
              print("No such file")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-30
        • 1970-01-01
        • 2016-04-02
        • 2013-04-09
        相关资源
        最近更新 更多