BT源代码学习心得(二):程序运行参数的获取 -- 转贴自 wolfenstein (NeverSayNever)

来源:互联网 发布:剑三妖艳成男脸型数据 编辑:程序博客网 时间:2024/06/06 03:41

BT源代码学习心得(二):程序运行参数的获取

发信人: wolfenstein (NeverSayNever), 个人文集
标  题: BT源代码学习心得(二):程序运行参数的获取
发信站: 水木社区 (Sat Jul 30 21:08:27 2005), 文集
(本文包含HTML标记,终端模式下可能无法正确浏览)
    把这部分单独列举出来,是因为我觉得BT的程序在处理配置参数方面的这部分代码很有
参考价值。
    程序的配置参数首先来源于BitTorrent/defaultargs.py。这个模块中包含了一些参数
的默认值,由于它们是直接编译进BT的模块中,因此即使其它的配置文件都丢失后,程序还
是有一些默认值可以作为参数。defaultargs.py中定义了一个函数get_defaults可以让各个
可执行模块得到它们对应的默认值。例如btdownloadgui和btmaketorrentgui得到的默认值
是不同的。而且defaultargs.py中为可执行模块生成的默认属性集合是一个以三元组为元素
的列表。每一个三元组代表一条属性(也就是一条程序的配置参数),每个三元组包含了属性
的名称,属性的值和该属性的说明。值得注意的是,在后面我们可以看到,属性的说明直接
作为帮助信息输出给用户。
    在获取完默认值后,各个可执行模块通常都调用BitTorrent/configfile.py中的函数
parse_configuration_and_args来进一步从可能存在的配置文件和命令行参数中对程序运行
的一些参数进行调整。这个函数中首先从配置文件中获取信息,值得一提的是它获取配置文
件的方法。BT将在用户的"主目录"下建立一个.bittorrent的目录,并且从这里读取配置文
件(如果这个文件不存在就建立一个,下次就存在了)。其中"主目录"的获取方法在
BitTorrent/__init__.py中,它的实现方法比较巧妙,利用了python的os和os.path库进行
操作,可以针对不同的操作系统使用合适的方法得到这个"主目录"。在windows下,这个目
录通常是文档和设置目录下的用户名目录下的"Application Data",而在linux下这个目录
就是~。
    在parse_configuration_and_args中,还要调用BitTorrent/parseargs.py模块中的
parseargs对命令行中输入的参数进行处理。根据其中的注释,可以看出程序将会把以下格
式的参数作为一种控制方面的操作(options)而改变原来的配置,其它的参数都只是简单得
堆在args数组中供可执行模块自己去处理。这些格式有--aaa 1型,即以两个-号开头的参数
,将和他后面的参数一起,构成一个配置项(aaa=1),-a1型,即以一个-号开头的参数,直
接取一个字母作为配置项的属性名,这个参数后面的子字符串作为配置项的属性值(a=1),
-a 1型,即以一个-号开头的参数,但是后面只有一个字母,就将下一个参数作为属性值(因
此这里也是a=1)。
    经过这些处理后,程序的其它部分就可以很方便得使用配置好的参数了,例如:
    if self.config['xxx']
         .......
    或者
    aaa = self.config['bbb']
    等等。

责任编辑 webmaster

 
<script type="text/javascript"><!--google_ad_client = "pub-4357927283882197";google_ad_width = 728;google_ad_height = 90;google_ad_format = "728x90_as";google_ad_type = "image";google_ad_channel = "";//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script><script> window.google_render_ad(); </script><iframe name="google_ads_frame" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-4357927283882197&amp;dt=1222221648761&amp;lmt=1221633507&amp;prev_slotnames=8890181690&amp;format=728x90_as&amp;output=html&amp;correlator=1222221647631&amp;url=http%3A%2F%2Fwww.yuanma.org%2Fdata%2F2006%2F1228%2Farticle_2020.htm&amp;ad_type=image&amp;ref=http%3A%2F%2Fwww.google.cn%2Fsearch%3Fhl%3Dzh-CN%26q%3DBT%25E6%25BA%2590%25E4%25BB%25A3%25E7%25A0%2581%25E5%25AD%25A6%25E4%25B9%25A0%25E5%25BF%2583%25E5%25BE%2597%26btnG%3DGoogle%2B%25E6%2590%259C%25E7%25B4%25A2%26meta%3D%26aq%3Df%26oq%3D&amp;frm=0&amp;cc=34&amp;ga_vid=1194021783.1221551809&amp;ga_sid=1222221373&amp;ga_hid=989541976&amp;ga_fc=true&amp;flash=9.0.47&amp;u_h=1024&amp;u_w=1280&amp;u_ah=964&amp;u_aw=1280&amp;u_cd=32&amp;u_tz=480&amp;u_his=1&amp;u_java=true&amp;u_nplug=16&amp;u_nmime=57" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no" width="728" frameborder="0" height="90"></iframe>
相关链接
原创粉丝点击