2010-07-31 77 views
1

只需要一些关于如何设计python脚本文件test.py的说明。关于python脚本文件的说明

  1. 定义函数时,他们是否必须在导入后立即进入文件顶部?

  2. 我应该这样做main check in my file?

  3. 我想在我的服务器上运行这个文件作为cron作业。如果文件变得太大(我也有我的sqlalchemy定义),我怎样才能将文件分解成多个文件?我希望通过将文件放入服务器中的文件夹来轻松部署。

+0

请这样做。首先阅读PEP 8:http://www.python.org/dev/peps/pep-0008/。其次,阅读后,更新你的问题,提及你在PEP-8中不理解的具体内容。这已经在PEP 8中得到了回答。 – 2010-08-01 14:39:51

回答

2

大多数脚本看起来像下面这样:

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() 

所以你的脚本的身体主要是由函数/类定义。那里(通常)是非常少的代码不在函数/类定义中。

我会尝试以任何方式将功能分组,以便于组织和可读性。如果您认为某个函数可以在该特定脚本以外的地方重用,请将其放入模块中,然后将该模块导入到该脚本中。

在你的crontab中定义PYTHONPATHPATH。那么你应该没有问题从cron运行你的脚本。

+0

太棒了,正是我在找的东西。 – Blankman 2010-07-31 21:42:24

+0

你从命令行调用脚本时通过的参数是什么? – Blankman 2010-07-31 21:47:11

+0

@Blankman:我使用标准库中的'optparse'模块来处理来自命令行的参数。如果你使用Python2.7或更高版本,你可能想考虑'argparse'模块,我相信这个模块是用来取代optparse的。我将编辑我的答案以显示optparse的结构。 – unutbu 2010-07-31 22:05:24