我想知道我是否可以在运行时在 Python 中打开任何类型的应用程序?
问问题
68250 次
7 回答
19
假设您使用的是 Windows,您将使用以下命令之一。
import subprocess
subprocess.call('C:\\myprogram.exe')
import os
os.startfile('C:\\myprogram.exe')
于 2013-02-12T11:45:02.233 回答
3
使用系统,您还可以利用开放功能(特别是如果您使用的是 mac os/unix 环境。当您遇到权限问题时可能很有用。
import os
path = "/Applications/Safari.app"
os.system(f"open {path}")
于 2020-03-27T02:04:19.757 回答
1
尝试看看subprocess.call
http://docs.python.org/2/library/subprocess.html#using-the-subprocess-module
于 2013-02-12T11:42:27.633 回答
0
使用此代码: -
import subprocess
subprocess.call('drive:\\programe.exe')
于 2013-04-01T10:32:59.467 回答
0
尝试这个 :
import os
import subprocess
command = r"C:\Users\Name\Desktop\file_name.exe"
os.system(command)
#subprocess.Popen(command)
于 2019-06-20T14:26:35.127 回答
0
当然可以。只需导入import subprocess
并调用subprocess.call('applicaitonName')
.
例如你想在Ubuntu中打开 VS Code :
import subprocess
cmd='code';
subprocess.call(cmd)
此行也可用于打开应用程序,如果您需要更多信息,例如我想捕获错误,所以我使用了stderr
subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT)
于 2019-08-08T15:41:54.807 回答
0
Windows、Linux 和 MacOS 的一些额外示例:
import subprocess
# Generic: open explicitly via executable path
subprocess.call(('/usr/bin/vim', '/etc/hosts'))
subprocess.call(('/System/Applications/TextEdit.app/Contents/MacOS/TextEdit', '/etc/hosts'))
# Linux: open with default app registered for file
subprocess.call(('xdg-open', '/tmp/myfile.html'))
# Windows: open with whatever app is registered for the given extension
subprocess.call(('start', '/tmp/myfile.html'))
# Mac: open with whatever app is registered for the given extension
subprocess.call(('open', '/tmp/myfile.html'))
# Mac: open via MacOS app name
subprocess.call(('open', '-a', 'TextEdit', '/etc/hosts'))
# Mac: open via MacOS app bundle name
subprocess.call(('open', '-b', 'com.apple.TextEdit', '/etc/hosts'))
如果您需要打开特定的 HTML 页面或 URL,则可以使用webbrowser模块:
import webbrowser
webbrowser.open('file:///tmp/myfile.html')
webbrowser.open('https://yahoo.com')
# force a specific browser
webbrowser.get('firefox').open_new_tab('file:///tmp/myfile.html')
于 2022-01-22T22:45:32.443 回答