【问题标题】:Python os.system hangs for no reason?Python os.system 无缘无故挂起?
【发布时间】:2019-04-26 15:13:29
【问题描述】:

我认为以前没有人问过这个问题,但我读过类似的问题,但没有一个可以解决我的问题。我正在使用 sqlite3 在 Tkinter 中进行文件管理。它有一个“写入”按钮,单击该按钮时,会使用 os.system 打开一个新的记事本文件。但是,代码卡在此处,无法继续执行下一行。

def openfile(uid, filename):
if filename=='':
    mb.showerror('Missing Input', 'Please specify a file name.')
else:
    try:
        os.system("notepad " +filename+".txt") #FREEZES HERE
        now=datetime.now()
        today= str(now.day) + '/' + str(now.month) +'/' + str(now.year)
        filecur.execute("SELECT * FROM File_Data")
        f=filecur.fetchall()
        print(f)
        filecur.execute("insert into File_Data (UID, FileName, Date_) values (?, ?, ?)", ( uid, filename, today))
        fileconn.commit()
    except:
        raise
        mb.showerror('Error','Looks like something is wrong. Please try again.')
        sys.exit(0)

如果有人可以提供帮助,那就太好了。谢谢!

【问题讨论】:

  • 只是确保filename 还没有.txt,对吧?否则你试图打开filenmae.txt.txt
  • 强制:不要使用 os.system - 使用 subprocess 模块:
  • os.system 将等到进程退出(即,直到您关闭记事本)。
  • @Tomothy32 它没有:)

标签: python subprocess


【解决方案1】:

这是因为 os.system() 在返回之前确实会等待其进程完成。

问题可以通过使用线程或子进程模块来解决。

在此处阅读更多信息:http://docs.python.org/library/subprocess.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多