在Windows上用Python调整控制台窗口大小的问题
我一直对这段代码有疑问在Windows上用Python调整控制台窗口大小的问题,python,windows,python-2.7,Python,Windows,Python 2.7,我一直对这段代码有疑问 def changeWindowSize(): cmd = "mode con: cols=107 lines=50" resize = os.system(cmd) subprocess.Popen(resize) 它确实有效,但随后也会生成回溯 以下是回溯: 调用os.system就足够了: def changeWindowSize(): cmd = "mode con: cols=107 lines=50" os.system(c
def changeWindowSize():
cmd = "mode con: cols=107 lines=50"
resize = os.system(cmd)
subprocess.Popen(resize)
它确实有效,但随后也会生成回溯
以下是回溯:
调用
os.system
就足够了:
def changeWindowSize():
cmd = "mode con: cols=107 lines=50"
os.system(cmd)
如果要使用subprocess.Popen
,请使用shell=True调用:
def changeWindowSize():
cmd = "mode con: cols=107 lines=50"
subprocess.Popen(cmd, shell=True)
# OR subprocess.call(cmd, shell=True)
脚本失败,因为它将整数对象(返回值为os.system
)传递给subprocess.Popen
,后者接受列表或字符串作为第一个参数。shell=True
。它是一个外部PE可执行文件,但由于历史原因,扩展名是.com而不是.exe,例如subprocess.call('mode.com con cols=107 lines=50')
。作为参考,chcp.com、format.com、more.com和tree.com也是如此。在64位窗口中,这些都是位于%SystemRoot%\System32
中的64位PE可执行文件。他们只是碰巧拥有旧的.com扩展名,而旧的MS-DOS 16位.com文件类型使用了旧的.com扩展名。除了名称和命令行界面(大多数情况下),它们在实现方面与原始MS-DOS实用程序没有任何共同之处。它们是Win32控制台应用程序。