python怎么设置参数_Python 参数设置

1. 配置文件(ConfigParser模块)

1.1 ConfigParser简介

ConfigParser 是用来读取配置文件的包。配置文件的格式如下:中括号“[ ]”内包含的为section。section 下面为类似于key-value的options内容。例如

[db]

db_host = 127.0.0.1

db_port = 22

db_user = root

db_pass = rootroot

[concurrent]

thread = 10

processor = 20

1.2 ConfigParser 初始工作

使用ConfigParser 首选需要初始化实例,并读取配置文件:

import ConfigParser

cf = ConfigParser.ConfigParser()

cf.read("配置文件名")

1.3 ConfigParser函数

1.3.1. 获取所有sections

>>> s = cf.sections()

>>> print s

['db', 'concurrent']

1.3.2 获得指定section的options

>>> cf.options('db')

['db_host', 'db_port', 'db_user', 'db_pass']

1.3.3 获得指定sections的配置信息

>>> cf.items('db')

[('db_host', '127.0.0.1'), ('db_port', '22'), ('db_user', 'root'), ('db_pass', 'rootroot')]

1.3.4 获得指定sections的option的信息

>>> cf.get("db", "db_host")

'127.0.0.1'

>>> cf.getint("db", "db_port")

22

同样有getfloat、getboolean

以下注意:凡是改变文件内容的,都要最后写入。

1.3.5 设置某个option的值

>>> cf.set("db", "db_host", "127.1.1.1")

>>> cf.write(open("config.ini", 'w'))

写入后的文件内容为

[db]

db_host = 127.1.1.1

db_port = 22

db_user = root

db_pass = rootroot

[concurrent]

thread = 10

processor = 20

1.3.6 添加一个section

>>> cf.add_section("jihite")

>>> cf.set("jihite", "int", "15")

>>> cf.set("jihite", "bool", "True")

>>> cf.set("jihite", "float", "3.14")

>>> cf.write(open("config.ini", 'w'))

写入后的文件内容为

[db]

db_host = 127.1.1.1

db_port = 22

db_user = root

db_pass = rootroot

[concurrent]

thread = 10

processor = 20

[jihite]

int = 15

bool = True

float = 3.14

1.3.7 移除一个section

>>> cf.remove_option("jihite", "int")

True

>>> cf.write(open("config.ini", 'w'))

改变后的文件为

[db]

db_host = 127.1.1.1

db_port = 22

db_user = root

db_pass = rootroot

[concurrent]

thread = 10

processor = 20

[jihite]

bool = True

float = 3.14

1.3.8 移除一个option

>>> cf.remove_section("jihite")

True

>>> cf.write(open("config.ini", 'w'))

改变后的文件为

[db]

db_host = 127.1.1.1

db_port = 22

db_user = root

db_pass = rootroot

[concurrent]

thread = 10

processor = 20

1.4 ConfigParser举例

方式二:解析参数(argparse模块)

2. 解析参数(argparse模块)

2.1 argparse简介

argparse是python的命令行解析工具,它是Python标准库中推荐使用的编写命令行程序的工具。

2.2 argparser 初始工作

import argparse

parser = argparse.ArgumentParser()

类ArgumentParser定义为:

class ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True)

参数的含义为

2.2.1 prog:程序的名字,默认为sys.argv[0]

>>> parser = argparse.ArgumentParser(prog="myprogram")

>>> parser.print_help()

usage: myprogram [-h]

optional arguments:

-h, --help show this help message and exit

2.2.2 usage: 描述程序用途的字符串

例子

del.py

importargparseif __name__=="__main__":

parser=argparse.ArgumentParser()

parser.add_argument('content', help='content')

parser.add_argument('title', help='title')

parser.add_argument('tolist', help='tolist')

args=parser.parse_args()

content, title, tolist=args.content, args.title, args.tolist

mail=SMTP_SSL()

mail.sendMail(content, title, tolist)

执行

python2.7 del.py

usage: del.py [-h] content title tolist

del.py: error: too few arguments

2.2.3

更多参数

parser.add_argument("-v", "--verbose", help="increase output verbosity", action="store_true")

parser.add_argument('numbers', type=int, help="numbers to calculate", nargs='+')

parser.add_argument('-s', '--sum', help="sum all numbers", action='store_true', default=True)

parser.add_argument('-f', '--format', choices=['int', 'float'], help='choose result format', default='idsf')

2.3 添加参数选项

http://www.cnblogs.com/linxiyue/p/3908623.html?utm_source=tuicool

3. 综合实例

要求

1. 配置文件和输入参数两种方式,其中输入参数优先级高

2. 参数包括配置文件、下载目录、进程个数、日志文件、日志类型

3. 如果进程个数不知,那么默认为机器cpu核数

4. 如果参数类型不知,那么默认为3

defsetArgs():

parse= argparse.ArgumentParser(prog = "down_v9.py", usage="%(prog)s [options]")

parse.add_argument("-c", "-config", type=str, help="配置文件")

parse.add_argument("-o", "-outdir", type=str, help="下载目录")

parse.add_argument("-p", "-processnum", type=int, help="进程个数")

parse.add_argument("-l", "-logfile", type=str, help="日志文件")

parse.add_argument("-lt", "-logtype", type=str, help="输出日志类型:1,只显示到屏幕;2,只输出到日志文件;3,即显示到屏幕又输出到日志文件")

args=parse.parse_args()returnargs

defget_args():

args=setArgs()

config=args.c

outdir=args.o

process_num=args.p

logfile=args.l

logtype=args.ltif config andos.path.isfile(config):

cf=ConfigParser.ConfigParser()

cf.read(config)

s=cf.sections()if "con" ins:

cons= cf.options("con")if outdir == None and "outdir" incons:

outdir= cf.get("con", "outdir")if process_num == None and "process_num" incons:

process_num= cf.getint("con", "process_num")if logfile == None and "logfile" incons:

logfile= cf.get("con", "logfile")if logtype == None and "logtype" incons:

logtype= cf.get("con", "logtype")if process_num ==None:

process_num=multiprocessing.cpu_count()if logtype ==None:

logtype= 3

return [outdir, process_num, logfile, logtype]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值