我正在尝试创建一个简单的python / tkinter GUI来从Windows运行cygwin命令。
为了避免获得命令窗口,我正在使用pythonw.exe启动我的python脚本。
这是运行cygwin命令的代码:
def exec_ls():
clear_log(log)
print_log(log, "*** Running ls -lsa ***\n")
s = subprocess.run(
["C:/cygwin/bin/ksh.exe", "-c", ". /etc/profile; ls -1 c:/test"],
stdout=PIPE,
stderr=STDOUT,
)
print_log(log, s.stdout)
print_log(log, "\n*** END ***")
这成功运行,但是当调用exec_ls()时,空命令窗口会闪烁。
要删除此窗口的出现,我尝试使用creationflags如下:
def exec_ls():
clear_log(log)
print_log(log, "*** Running ls -lsa ***\n")
s = subprocess.run(
["C:/cygwin/bin/ksh.exe", "-c", ". /etc/profile; ls -1 c:/test"],
stdout=PIPE,
stderr=STDOUT,
creationflags=CREATE_NO_WINDOW,
)
print_log(log, s.stdout)
print_log(log, "\n*** END ***")
但后来我没有得到命令窗口,但命令也没有运行(没有输出)。
我做错了什么?
最好的祝福
我发现了问题:缺少CREATE_NO_WINDOW的导入,但由于没有命令窗口,我无法看到相应的错误消息。
import subprocess
from subprocess import PIPE, STDOUT, CREATE_NO_WINDOW
我通过从命令窗口而不是从我创建的快捷方式使用pythonw.exe运行我的脚本来找到它。