Discuz! BBS

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 399|回复: 0

Python subprocess

[复制链接]

254

主题

363

帖子

2431

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2431
发表于 2025-2-13 21:51:53 | 显示全部楼层 |阅读模式
Python subprocess
  1. import subprocess
  2. subprocess.call(['python', r'\info.py'])  # r'' 表示原始字符串,防止\i 等的转义意味
  3. subprocess.Popen(['python', r'\info2.py'])  # 这里在同一个powershell里面用新进程开启info2.py
复制代码


在 Windows 系统上,你可以使用 subprocess 模块来启动一个新的 PowerShell 进程,并在该 PowerShell 进程中运行一个 .py 程序。你可以通过指定 shell=True 和使用 creationflags=subprocess.CREATE_NEW_CONSOLE 来确保 PowerShell 在一个新的控制台窗口中打开。不过,请注意,shell=True 可能会带来安全风险,特别是当你从不受信任的源构建命令时。

以下是一个示例代码,展示了如何使用 subprocess 模块在新的 PowerShell 窗口中运行一个 .py 程序:
  1. import subprocess
  2. import sys

  3. # 要运行的 Python 脚本的路径
  4. script_path = 'C:\\path\\to\\your\\script.py'

  5. # 构建 PowerShell 命令,使用 -NoProfile 来避免加载 PowerShell 配置文件,加快启动速度
  6. # -ExecutionPolicy Bypass 用于绕过执行策略(在生产环境中请谨慎使用)
  7. # & 表示调用操作符,用于执行后面的字符串作为命令
  8. # 注意:这里我们假设 Python 已经添加到系统的 PATH 环境变量中
  9. powershell_command = f'powershell -NoProfile -ExecutionPolicy Bypass -Command "& python {script_path}"'

  10. # 使用 subprocess.Popen 启动新的 PowerShell 窗口并运行脚本
  11. # creationflags=subprocess.CREATE_NEW_CONSOLE 确保在新的控制台窗口中打开
  12. process = subprocess.Popen(powershell_command, shell=True, creationflags=subprocess.CREATE_NEW_CONSOLE)

  13. # 注意:这里我们不需要等待进程完成,因为我们在新的窗口中运行它
  14. # 如果你需要等待进程完成,可以调用 process.wait()
  15. # 但是,由于我们在新的窗口中运行它,通常我们不会在这里等待它
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-4-16 04:46 , Processed in 0.013586 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表