Python 参数设置

简介:

1. 配置文件(ConfigParser模块)

1.1 ConfigParser简介

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

1
2
3
4
5
6
7
8
9
[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 首选需要初始化实例,并读取配置文件:

1
2
3
import ConfigParser
cf = ConfigParser.ConfigParser()
cf.read( "配置文件名" )

 

1.3 ConfigParser函数

1.3.1. 获取所有sections

1
2
3
>>> s = cf.sections()
>>>  print  s
[ 'db' 'concurrent' ]

1.3.2 获得指定section的options

1
2
>>> cf.options( 'db' )
[ 'db_host' 'db_port' 'db_user' 'db_pass' ]

1.3.3 获得指定sections的配置信息

1
2
>>> cf.items( 'db' )
[( 'db_host' '127.0.0.1' ), ( 'db_port' '22' ), ( 'db_user' 'root' ), ( 'db_pass' 'rootroot' )]

1.3.4 获得指定sections的option的信息

1
2
3
4
>>> cf.get( "db" "db_host" )
'127.0.0.1'
>>> cf.getint( "db" "db_port" )
22

同样有getfloat、getboolean

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

1.3.5 设置某个option的值

1
2
>>> cf.set( "db" "db_host" "127.1.1.1" )
>>> cf.write(open( "config.ini" 'w' ))

写入后的文件内容为

1
2
3
4
5
6
7
8
9
[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

1
2
3
4
5
>>> 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' ))

写入后的文件内容为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[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

1
2
3
>>> cf.remove_option( "jihite" "int" )
True
>>> cf.write(open( "config.ini" 'w' ))

改变后的文件为

1
2
3
4
5
6
7
8
9
10
11
12
13
[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

1
2
3
>>> cf.remove_section( "jihite" )
True
>>> cf.write(open( "config.ini" 'w' ))

改变后的文件为

1
2
3
4
5
6
7
8
9
[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 初始工作

1
2
import argparse
parser = argparse.ArgumentParser()

类ArgumentParser定义为:

1
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] 

1
2
3
4
5
6
>>> 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

复制代码
import argparse
if __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)
复制代码

执行

1
2
3
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

复制代码
def setArgs():
    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()
    return args

def get_args():
    args = setArgs()
    config = args.c
    outdir = args.o
    process_num = args.p
    logfile = args.l
    logtype = args.lt

    if config and os.path.isfile(config):
        cf = ConfigParser.ConfigParser()
        cf.read(config)
        s = cf.sections()
        if "con" in s:
            cons = cf.options("con")
            if outdir == None and "outdir" in cons:
                outdir = cf.get("con", "outdir")
            if process_num == None and "process_num" in cons:
                process_num = cf.getint("con", "process_num")
            if logfile == None and "logfile" in cons:
                logfile = cf.get("con", "logfile")
            if logtype == None and "logtype" in cons:
                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]
复制代码

 




本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/4460855.html,如需转载请自行联系原作者


相关文章
|
7月前
|
JSON 缓存 开发者
淘宝商品详情接口(item_get)企业级全解析:参数配置、签名机制与 Python 代码实战
本文详解淘宝开放平台taobao.item_get接口对接全流程,涵盖参数配置、MD5签名生成、Python企业级代码实现及高频问题排查,提供可落地的实战方案,助你高效稳定获取商品数据。
|
9月前
|
算法 数据可视化 数据挖掘
基于EM期望最大化算法的GMM参数估计与三维数据分类系统python源码
本内容展示了基于EM算法的高斯混合模型(GMM)聚类实现,包含完整Python代码、运行效果图及理论解析。程序使用三维数据进行演示,涵盖误差计算、模型参数更新、结果可视化等关键步骤,并附有详细注释与操作视频,适合学习EM算法与GMM模型的原理及应用。
|
10月前
|
XML JSON 安全
分析参数顺序对Python requests库进行POST请求的影响。
最后,尽管理论上参数顺序对POST请求没影响,但编写代码时仍然建议遵循一定的顺序和规范,比如URL总是放在第一位,随后是data或json,最后是headers,这样可以提高代码的可读性和维护性。在处理复杂的请求时,一致的参数顺序有助于调试和团队协作。
271 9
|
分布式计算 MaxCompute 对象存储
|
存储 C++ Python
[oeasy]python037_ print函数参数_sep分隔符_separator
本文介绍了Python中`print`函数的`sep`参数,即分隔符。通过回顾上文内容,解释了类型与`type`的概念,并强调了参数类型的重要性。文章详细探讨了`print`函数如何使用`sep`参数来分隔输出值,默认分隔符为空格(序号32)。还讨论了如何修改分隔符为其他字符,如冒号,并解释了为何反斜杠需要使用双反斜杠表示。最后,文章追溯了`sep`名称的由来,以及相关词汇的历史背景,如盎格鲁-萨克逊人的武器和语言。
520 1
|
存储 算法 API
Python学习五:函数、参数(必选、可选、可变)、变量、lambda表达式、内置函数总结、案例
这篇文章是关于Python函数、参数、变量、lambda表达式、内置函数的详细总结,包含了基础知识点和相关作业练习。
259 0
|
Java 程序员 C++
【Python】链式、嵌套调用、递归、函数栈帧、参数默认值和关键字参数
【Python】链式、嵌套调用、递归、函数栈帧、参数默认值和关键字参数
229 0
【Python】链式、嵌套调用、递归、函数栈帧、参数默认值和关键字参数
|
存储 人工智能 开发工具
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
只需要通过向AI助理提问的方式输入您的需求,即可瞬间获得核心流程代码及参数,缩短学习路径、提升开发效率。
1834 5
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
|
机器学习/深度学习 PyTorch TensorFlow
Python实现深度学习学习率指数衰减的方法与参数介绍
学习率指数衰减提供了一种高效的动态调整学习率的手段,帮助模型在不同训练阶段以不同的学习速度优化,有利于提升模型性能和训练效率。通过合理设置衰减策略中的参数,可以有效地控制学习率的衰减过程,实现更加精确的模型训练调优。
794 0
|
API Python
使用Python requests库下载文件并设置超时重试机制
使用Python的 `requests`库下载文件时,设置超时参数和实现超时重试机制是确保下载稳定性的有效方法。通过这种方式,可以在面对网络波动或服务器响应延迟的情况下,提高下载任务的成功率。
923 1

推荐镜像

更多