【问题标题】:Issue on resizing the Console Window in Python on Windows在 Windows 上使用 Python 调整控制台窗口大小的问题
【发布时间】:2015-12-06 07:34:05
【问题描述】:

我不断收到此代码的问题。

def changeWindowSize():
   cmd = "mode con: cols=107 lines=50"
   resize = os.system(cmd)
   subprocess.Popen(resize)

它确实有效,但也会生成一个 Traceback。

这是回溯: https://i.gyazo.com/e1fa638c083d2f05d391abf64a1e3778.png

【问题讨论】:

    标签: python windows python-2.7


    【解决方案1】:

    拨打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,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 位 Windows 中,这些都是位于 %SystemRoot%\System32 中的 64 位 PE 可执行文件。他们只是碰巧有旧的 .com 扩展名,该扩展名曾经与旧的 MS-DOS 16 位 .COM 文件类型一起使用。除了名称和命令行界面(大部分)之外,它们在实现方面与最初的 MS-DOS 实用程序没有任何共同之处。它们是 Win32 控制台应用程序。
    猜你喜欢
    • 2014-11-12
    • 2011-09-26
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 2016-11-05
    • 1970-01-01
    相关资源
    最近更新 更多