BT源代码学习心得(二):程序运行参数的获取
来源:互联网 发布:java 解压zip 包 编辑:程序博客网 时间:2024/05/16 10:50
BT源代码学习心得(二):程序运行参数的获取
发信人: wolfenstein (NeverSayNever), 个人文集
标 题: BT源代码学习心得(二):程序运行参数的获取
发信站: 水木社区 (Sat Jul 30 21:08:27 2005), 文集
标 题: 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下这个目录
把这部分单独列举出来,是因为我觉得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']
等等。
在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']
等等。
- BT源代码学习心得(二):程序运行参数的获取
- BT源代码学习心得(二):程序运行参数的获取
- BT源代码学习心得(二):程序运行参数的获取 -- 转贴自 wolfenstein (NeverSayNever)
- BT源代码学习心得(二):程序运行参数的获取 -- 转贴自 wolfenstein (NeverSayNever)
- 获取程序的运行参数
- BT源代码学习心得(三):种子文件的编码方式
- BT源代码学习心得(四):种子文件的生成
- BT源代码学习心得(三):种子文件的编码方式
- BT源代码学习心得(四):种子文件的生成
- BT源代码学习心得(一):总体描述
- BT源代码学习心得(一):总体描述
- BT源代码学习心得(1-5总体)
- BT源代码学习心得(十三):客户端源代码分析(对等客户的连接建立及其握手协议)
- BT源代码学习心得(十六):客户端源代码分析(实际数据的传输及其速率限制策略)
- BT源代码学习心得(八):跟踪服务器(Tracker)的代码分析(用户请求的实际处理)
- BT源代码学习心得(九):客户端源代码分析(图形界面浅析)
- BT源代码学习心得(十):客户端源代码分析(相关对象一览)
- BT源代码学习心得(十一):客户端源代码分析(存储管理)
- 教怎么用无线猫上网
- Exploring the C++ Unit Testing Framework Jungle
- BT源代码学习心得(一):总体描述
- Exception starting filter struts2
- 开篇~~嘿嘿~~
- BT源代码学习心得(二):程序运行参数的获取
- 为什么我们对Ext又爱又恨
- 教你卸载 Office 正版增值计划通知 (KB949810)-CHS
- BT源代码学习心得(三):种子文件的编码方式
- BT源代码学习心得(四):种子文件的生成
- 3/18 股票操作总结分析;&故事分享
- 关于智捷教育
- Apache 的安装配置,及二级域名的配置
- 全国各地DNS服务器IP地址