2010-07-31 6 views
1

Juste besoin de quelques précisions sur la façon de concevoir un fichier script python test.py.Clarifications sur un fichier de script python

  1. Lors de la définition des fonctions, doivent-elles aller en haut du fichier juste après les importations?

  2. devrais-je faire cela principal vérifier dans mon dossier?

  3. Je souhaite exécuter ce fichier sur mon serveur en tant que tâche cron. Si le fichier devient trop gros (j'ai aussi mes définitions sqlalchemy), comment puis-je décomposer le fichier en plusieurs fichiers? Je veux que cela soit facile à déployer en déposant simplement les fichiers dans un dossier de mon serveur.

+0

Pour ce faire, s'il vous plaît. Premièrement, lisez PEP 8: http://www.python.org/dev/peps/pep-0008/. Deuxièmement, après avoir lu, mettez à jour votre question pour mentionner des choses spécifiques que vous n'avez pas comprises dans PEP-8. Ceci est déjà répondu dans PEP 8. –

Répondre

2

La plupart des scripts ressembler à quelque chose comme ce qui suit:

import module1 
import module2 

CONSTANT=... 

def foo(): 
    ... 

def bar(): 
    .... 

class Baz(): 
    .... 

def run(verbose=False): 
    .... 

if __name__=='__main__': 
    import optparse 
    def parse_options(): 
     usage = 'usage: %prog [options]' 
     parser = optparse.OptionParser(usage=usage) 
     parser.add_option('-v', '--verbose', dest='verbose', 
          action='store_true', 
          default=False, 
          help="verbose") 
     return parser.parse_args() 
    def cli(): 
     opt,args=parse_options()   
     run(verbose=opt.verbose) 
    cli() 

Ainsi, le corps de votre script se compose principalement de fonction/définitions de classe. Il y a (généralement) très peu de code qui ne se trouve pas dans une définition de fonction/classe.

J'essaierais de regrouper les fonctions de quelque façon que ce soit pour faciliter l'organisation et la lisibilité. Si vous pensez qu'une fonction peut être réutilisée ailleurs que dans ce script particulier, placez-la dans un module et importez-la dans ce script. Définissez PYTHONPATH et PATH dans votre crontab. Ensuite, vous devriez avoir aucun problème à exécuter votre script à partir de cron.

+0

super, exactement ce que je cherchais. – Blankman

+0

qu'en est-il des args que vous passez en appelant le script à partir de la ligne de commande? – Blankman

+0

@Blankman: J'utilise le module 'optparse' de la bibliothèque standard pour gérer les arguments de la ligne de commande. Si vous utilisez Python2.7 ou mieux, vous pouvez considérer le module 'argparse' qui, je crois, est destiné à remplacer optparse. Je vais éditer ma réponse pour montrer la structure pour optparse. – unutbu

Questions connexes