Discuz! BBS

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

Python 在新窗口调其他应用程序

[复制链接]

254

主题

363

帖子

2431

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2431
发表于 2025-2-14 21:54:20 | 显示全部楼层 |阅读模式
  1. subprocess.Popen(f'start powershell python {supplier_path}', shell=True)
复制代码

如下:
  1. import subprocess

  2. # 假设你要运行的脚本是'script.py'
  3. subprocess.run(['python', 'script.py'], shell=True)
复制代码
  1. import subprocess

  2. subprocess.Popen('start cmd /k python script.py', shell=True)
复制代码
关闭进程:
  1. import subprocess
  2. import time

  3. # 打开一个进程
  4. process = subprocess.Popen(['some_command', 'arg1', 'arg2'])
  5. try:
  6.     process.terminate()  # 尝试正常关闭进程
  7.     if process.wait(timeout=5):  # 等待5秒看是否能够正常结束,返回None表示超时未结束
  8.         process.kill()  # 如果5秒后还没结束,则强制关闭
  9. except subprocess.TimeoutExpired:
  10.     process.kill()  # 超时后强制关闭进程
复制代码




回复

使用道具 举报

254

主题

363

帖子

2431

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2431
 楼主| 发表于 2025-2-14 22:17:44 | 显示全部楼层


python程序内通过subprocess在新窗口运行其他.py程序
在Python中,使用subprocess模块可以在新窗口中运行另一个Python程序。这通常通过调用命令行解释器并传入相应的脚本路径和参数来实现。下面是一些常见的方法:

方法1:使用subprocess.run()
如果你使用的是Python 3.5及以上版本,可以使用subprocess.run()函数,它提供了一个简单的方式来运行命令并等待其完成。

import subprocess

# 假设你要运行的脚本是'script.py'
subprocess.run(['python', 'script.py'], shell=True)
方法2:使用subprocess.Popen()
subprocess.Popen()提供了更多的控制,例如可以获取输出或设置环境变量。如果你希望在新的窗口中打开,可以使用start参数(在某些操作系统上,如Windows)。

Windows
在Windows上,你可以使用start命令来在新的窗口中打开命令行窗口:

import subprocess

subprocess.Popen('start cmd /k python script.py', shell=True)
Linux/macOS
在Linux或macOS上,通常可以使用gnome-terminal、xterm或konsole(取决于你的桌面环境):

import subprocess

# 使用gnome-terminal (确保已经安装)
subprocess.Popen(['gnome-terminal', '--', 'python', 'script.py'])

# 或者使用xterm
# subprocess.Popen(['xterm', '-e', 'python script.py'])
方法3:使用os.system()或os.popen()(不推荐)
虽然这些方法更简单,但在新窗口中运行程序不是它们的首选用途,而且它们不如subprocess模块强大或安全。不过,它们可以用于快速原型制作或简单的脚本。

import os

# 使用os.system (不推荐,因为它不安全)
os.system('gnome-terminal -- python script.py')  # Linux/macOS
os.system('start cmd /k python script.py')       # Windows
注意事项:
安全性:尽量避免使用shell=True,除非你完全信任传递给命令的参数,因为这可能使你的程序容易受到shell注入攻击。如果可能,请使用列表形式传递命令和参数。

跨平台:如果你打算编写跨平台的代码,最好根据操作系统选择不同的命令来打开新窗口。例如,在Linux和macOS上使用gnome-terminal或xterm,在Windows上使用start。

依赖性:确保目标环境中安装了所需的终端模拟器(如gnome-terminal, xterm, konsole等)。

通过上述方法,你可以在Python中以不同的方式在新窗口中运行另一个Python程序。选择最适合你的需求和环境的方法。

提示:AI自动生成,仅供参考
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

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

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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