Question

J'ai un lien magnétique provenant d'un site torrent qui devrait ouvrir ce programme appelé transmission. Comment l'ouvrir avec Python ?

je suis sur Ubuntu d'ailleurs.J'ai entendu cette chose appelée xdg-open peut faire l'affaire, mais comment l'utiliser pour ouvrir le lien magnétique ?

et si ce n'est pas le code que je recherche, que dois-je utiliser pour exécuter le lien magnétique ?

Était-ce utile?

La solution

Jetons un œil aux arguments de ligne de commande de transmission-gtk aide:

$ transmission-gtk --help

Usage:transmission-gtk [OPTION...] [fichiers torrent ou urls]

Une approche rapide et sale pour une solution Python consiste à utiliser le os module:

import os
os.system("transmission-gtk urlhere")

Une manière bien meilleure et plus sophistiquée d'effectuer de tels appels vers des programmes externes consiste à utiliser le subprocess module.Quelques exemples supplémentaires peuvent être trouvés sous python - comment créer un sous-processus ?.

xdg-open fonctionne à peu près de la même manière.Mais au lieu d'appeler directement le client de transmission, il choisit l'application Torrent préférée (préférée dans ce cas signifie l'application par défaut, qui peut être définie en utilisant le menu des applications par défaut dans les paramètres du système Ubuntu).En vous pointant à plusieurs reprises vers les textes d'aide donnés en appelant le programme depuis la ligne de commande, il peut être intéressant d'inspecter les codes de sortie de xdg-open:

$ xdg-open --manuel

...

1 Erreur dans la syntaxe de la ligne de commande.

2 L'un des fichiers transmis en ligne de commande n'existait pas.

3 Un outil requis est introuvable.

4 L'action a échoué.

Autres conseils

Le code ci-dessous résume la méthode de téléchargement sur tous les systèmes d'exploitation.
  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)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top