我有一个来自 torrent 网站的磁力链接,应该打开这个名为传输的程序。我如何用 Python 打开它?
顺便说一句,我在ubuntu上。我听说这个叫做xdg-open
可以解决问题的东西但是我如何使用它来打开磁铁链接?
如果那不是我要找的代码,我应该用什么来运行磁力链接?
我有一个来自 torrent 网站的磁力链接,应该打开这个名为传输的程序。我如何用 Python 打开它?
顺便说一句,我在ubuntu上。我听说这个叫做xdg-open
可以解决问题的东西但是我如何使用它来打开磁铁链接?
如果那不是我要找的代码,我应该用什么来运行磁力链接?
查看 help 的命令行参数transmission-gtk
:
$传输-gtk--帮助
用法:transmission-gtk [OPTION...] [torrent files or urls]
python解决方案的一种快速而肮脏的方法是使用该os
模块:
import os
os.system("transmission-gtk urlhere")
对外部程序进行此类调用的一种更好、更复杂的方法是使用该subprocess
模块。在python下可以找到更多示例-如何创建子进程?.
xdg-open
工作方式几乎相同。但它不是直接调用传输客户端,而是选择首选的 Torrent 应用程序(这里首选是指默认应用程序,可以使用 Ubuntu 系统设置中的默认应用程序菜单进行设置)。通过从命令行调用程序反复指向您提供的帮助文本,检查以下的退出代码可能会很有趣xdg-open
:
$ xdg-打开--手动
...
1 命令行语法错误。
2 在命令行中传递的文件之一不存在。
3 找不到所需的工具。
4 操作失败。
import subprocess , os , sys
def open_magnet(magnet):
"""Open magnet according to os."""
if sys.platform.startswith('linux'):
subprocess.Popen(['xdg-open', magnet],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
elif sys.platform.startswith('win32'):
os.startfile(magnet)
elif sys.platform.startswith('cygwin'):
os.startfile(magnet)
elif sys.platform.startswith('darwin'):
subprocess.Popen(['open', magnet],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
else:
subprocess.Popen(['xdg-open', magnet],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)