Sam & Max: Python, Django, Git et du cul » fichier http://sametmax.com Deux développeurs en vadrouille qui se sortent les doigts du code Wed, 05 Feb 2014 14:20:37 +0000 en hourly 1 http://wordpress.org/?v=3.3.1 Ouvrir un fichier avec le bon programme en Python http://sametmax.com/ouvrir-un-fichier-avec-le-bon-programme-en-python/ http://sametmax.com/ouvrir-un-fichier-avec-le-bon-programme-en-python/#comments Thu, 17 Oct 2013 10:09:59 +0000 Sam http://sametmax.com/?p=7469 Votre logiciel doit permettre d’ouvrir un fichier avec un programme externe. Oui mais lequel ?

Les OS ont des réglages par défaut pour chaque type de fichier, et on peut demander “ouvrir le prog pour ce type de fichier par défaut”. Par exemple, moi, si je demande d’ouvrir un fichier vidéo, je m’attend à ce que VLC soit lancé.

Voilà comment faire ça en Python :

import subprocess
import sys
import os
 
def run_file(path):
 
    # Pas de EAFP cette fois puisqu'on est dans un process externe,
    # on ne peut pas gérer l'exception aussi facilement, donc on fait
    # des checks essentiels avant.
 
    # Vérifier que le fichier existe
    if not os.path.exists(path):
        raise IOError('No such file: %s' % path)
 
    # On a accès en lecture ?
    if hasattr(os, 'access') and not os.access(path, os.R_OK):
        raise IOError('Cannot access file: %s' % path)
 
    # Lancer le bon programme pour le bon OS :
 
    if hasattr(os, 'startfile'): # Windows
        # Startfile est très limité sous Windows, on ne pourra pas savoir
        # si il y a eu une erreu
        proc = os.startfile(path)
 
    elif sys.platform.startswith('linux'): # Linux:
        proc = subprocess.Popen(['xdg-open', path], 
                                 # on capture stdin et out pour rendre le 
                                 # tout non bloquant
                                 stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 
    elif sys.platform == 'darwin': # Mac:
        proc = subprocess.Popen(['open', '--', path], 
                                stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 
    else:
        raise NotImplementedError(
            "Your `%s` isn't a supported operatin system`." % sys.platform)
 
    # Proc sera toujours None sous Windows. Sous les autres OS, il permet de
    # récupérer le status code du programme, and lire / ecrire sur stdin et out
    return proc

C’était le petit snippet sympas du jour !

P.S : si quelqu’un utilise BDSM BSD ou Solaris, je veux bien qu’il complète le snippet.

flattr this!

]]>
http://sametmax.com/ouvrir-un-fichier-avec-le-bon-programme-en-python/feed/ 16
Laissez votre clé USB se reposer avec Nitroshare http://sametmax.com/laissez-votre-cle-usb-se-reposer-avec-nitroshare/ http://sametmax.com/laissez-votre-cle-usb-se-reposer-avec-nitroshare/#comments Fri, 13 Jul 2012 17:37:36 +0000 Sam http://sametmax.com/?p=1123 Vous êtes avec votre pote/copine/collègue, chacun sur une machine différente. Vous voulez lui envoyer votre film de cul/mp3/dossier de travail. Vos choix:

  • sortir la clé USB. Efficace. Il faut juste bouger son cul pour la trouver et faire la copie 2 fois.
  • passer par le réseau local à la mano (bonne chance);
  • vous l’uploadez sur le net car vous avez du temps à perdre et la mémoire flash c’est pour les tapettes;
  • envoyez un mail. Un divx splitté par mail c’est fun.
  • vous l’envoyez par messagerie instantannée à 3Ko/s, ça risque de déco, mais au moins c’est simple.

Nitroshare propose une alternative:

  1. téléchargez ce logiciel libre pour Windows/Mac/Linux;
  2. lancez le;
  3. faites un glissé-deposé
Capture d'écran de l'usage de Nitroshare

Le dubstep de Lindsey Stirling est quelque chose qu'on a toujours envie de partager

Le principe de Nitroshare est simple: il autodétecte toutes les instances de Nitroshare sur le réseau local. C’est le même principe que Giver, sauf que contrairement à Giver, ça marche. Evidement ça implique que vous soyez tous connectés au même routeur, ce qui est presque toujours le cas à la maison ou au bureau.

On atteind pas des vitesses de folie, mais ça se fait en background, ça gère les dossiers récusivement, c’est cross plateforme et terriblement simple. Et contrairement aux disques amovibles, on ne fait la copie qu’une fois.

En conclusion, je dirais que comme c’est gratos, on peut dire que c’est nitroshare, ni pas assez.

P.S: les utilisateurs d’Ubuntu voudront sans doute utiliser un PPA:

sudo add-apt-repository ppa:george-edison55/nitroshare
sudo apt-get update
sudo apt-get install nitroshare

Si vous utilisez le deb, faudra faire un petit sudo apt-get install libqjson0 libqxmlrpc1 avant.

flattr this!

]]>
http://sametmax.com/laissez-votre-cle-usb-se-reposer-avec-nitroshare/feed/ 16