【问题标题】:Run python script on Windows 10在 Windows 10 上运行 python 脚本
【发布时间】:2019-09-11 14:16:15
【问题描述】:

我正在尝试运行一个简单的 Python 脚本,该脚本运行 ipconfig /all 命令作为概念证明。

您可以在下面找到它:

from subprocess import PIPE, run

my_command = "ipconfig /all"
result = run(my_command, stdout=PIPE, stderr=PIPE, universal_newlines=True)
print(result.stdout, result.stderr)

但我没有成功运行它,我尝试使用命令行和单击它,但它会打开一个 cmd 窗口 1 秒钟,然后关闭它,所以我什至无法阅读它。

编辑:我使用的是 Python 3.7,我的脚本名为 ipconfig.py

【问题讨论】:

  • 您究竟是如何尝试使用命令行运行它的?
  • 我尝试运行python ipconfig.py
  • 在哪里?然后发生了什么?
  • 你错过了shell=True(虽然更好的方法是继续使用shell=False,而不是使用my_command=['ipconfig', '/all']
  • @Ced 你可能已经找到了,但是像this answer 中所说的就足够了

标签: python python-3.x windows-10 subprocess


【解决方案1】:

您的代码运行良好。 问题是cmd关闭窗口太快,看不到结果。 只需在关闭窗口之前添加一条命令等待您的交互即可。

您可以在代码末尾添加:

input("Press Enter to finish...")

或者完成后暂停执行:

import time

[代码结束时暂停5秒....]

time.sleep(5)

【讨论】:

  • input("Press Enter to finish...") 工作并解决了点击感谢的问题!
【解决方案2】:

显然,您的问题与脚本本身无关,而与 Python 解释器调用有关。检查[Python 3.Docs]: How do I run a Python program under Windows?
一般的做法是:

  • 在您的脚本目录中打开一个 cmd (PS) 窗口
  • 在您的模块(例如)上启动 Python(使用其完整路径:查看[Python 3.Docs]: Using Python on Windows 了解更多详细信息):

    "C:\Program Files\Python37-64\python.exe" ipconfig.py
    

当然,有很多方法可以改进,比如在%PATH%中添加它的安装目录(如果还没有的话)以避免每次都指定它的完整路径1,但一步一步来。

在脚本方面:检查[Python 3.Docs]: subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None)(以及示例):

  • 将参数作为列表传递:

    my_command = ["ipconfig", "/all"]
    
  • 您可能还想检查命令终止状态 (result.returncode)


1:如果安装时没有勾选Add Python 3.7 to PATH(检查图片来自2ndURL),您必须添加 Python 的路径(C:\Users\USER\AppData\Local\Programs\Python\ Python37)手动。网上资源很多,这里有3个:

【讨论】:

    猜你喜欢
    • 2020-05-07
    • 1970-01-01
    • 2015-11-20
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多