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
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)
执行
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]
Python 参数设置的更多相关文章
- python matplotlib 中文显示参数设置
python matplotlib 中文显示参数设置 方法一:每次编写代码时进行参数设置 #coding:utf-8import matplotlib.pyplot as pltplt.rcParam ...
- Python网络爬虫(1)--url访问及参数设置
环境:Python2.7.9 / Sublime Text 2 / Chrome 1.url访问,直接调用urllib库函数即可 import urllib2 url='http://www.baid ...
- 使用python crontab设置linux定时任务
熟悉linux的朋友应该知道在linux中可以使用crontab设置定时任务.可以通过命令crontab -e编写任务.当然也可以直接写配置文件设置任务. 但是有时候希望通过脚本自动设置,比如我们应用 ...
- LIBSVM使用方法及参数设置 主要参考了一些博客以及自己使用经验。
主要参考了一些博客以及自己使用经验.收集来觉得比较有用的. LIBSVM 数据格式需要---------------------- 决策属性 条件属性a 条件属性b ... 2 1:7 ...
- 详解使用python crontab设置linux定时任务
熟悉linux的朋友应该知道在linux中可以使用crontab设置定时任务.可以通过命令crontab -e编写任务.当然也可以直接写配置文件设置任务. 但是有时候希望通过脚本自动设置,比如我们应用 ...
- LIBSVM使用方法及参数设置
LIBSVM 数据格式需要---------------------- 决策属性 条件属性a 条件属性b ... 2 1:7 2:5 ... 1 1:4 2:2 ... 数据格式转换--------- ...
- Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数
Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数 一.Python参数类型 形参:定义函数时的参数变量. 实参:调用函数时使用的参数变量. 参数传递的过程 ...
- python 参数定义库argparse
python 参数定义库argparse 这一块的官方文档在这里 注意到这个库是因为argparse在IDE中和在ipython notebook中使用是有差异的,习惯了再IDE里面用,转到ipyth ...
- QGridLayout栅格布局函数参数设置
对于PyQt5的栅格布局函数,主要是实现多个控件之间的栅格布局形式,一般有两种设置方式: 1.Qdesigner布局设置时直接使用栅格布局函数,便可以把所需要布局的控件直接按照栅格方式来进行布局: 2 ...
随机推荐
- [Windows] 程序生成出现语法错误: 意外的令牌“标识符”,预期的令牌为“类型说明符”
程序生成出现语法错误: 意外的令牌“标识符”,预期的令牌为“类型说明符” 将平台工具集改为VS 2015 (v140) ,重新编译即可
- 微信小程序小结(4) -- 分包加载及小程序间跳转
分包加载 某些情况下,开发者需要将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载(主要是空间不够用,哈哈~). 在构建小程序分包项目时,构建会输出一个或多个功能的分包,其中 ...
- 使用Shader Graph实现《塞尔达传说:旷野之息》风格的着色器
https://mp.weixin.qq.com/s/19Xq6wYuXP0gQJDvC9Fh0g
- 【转】 PHP 两个日期(时间段) 之间的日期数组
在开发过程中会遇到这样一个需求:获取2018-11-02到2018-11-15之间的日期数组 希望得到如下数组: Array ( [] => -- [] => -- [] => -- ...
- 最长双回文串——manacehr
题目 [题目描述] 顺序和逆序读起来完全一样的串叫做回文串.比如 acbca 是回文串,而 abc 不是(abc 的顺序为 “abc”,逆序为 “cba”,不相同).输入长度为 n 的串 S,求 S ...
- phaser小游戏框架学习(二)
今天继续学习phaser.js.上周写的学习教程主要内容是创建游戏场景,游戏中的显示对象,按钮对象的使用以及如何在不同屏幕大小中完美适配.这篇博客以介绍游戏榜单的渲染更新为主. 代码地址:https: ...
- 4、OpenCV Python 像素运算
__author__ = "WSX" import cv2 as cv import numpy as np #前提需要运算的图像大小和类型完全相同 #算术运算 加减乘除 #逻辑运 ...
- php实现页面跳转的几种方式
PHP中实现页面跳转有一下几种方式,看了几个人写的不是很条理,自己整理一下 在PHP脚本代码中实现 <?php header("location:url地址") ?> ...
- STM32F030 定时器多次溢出才触发中断的问题
前言 最近在调试项目过程中,用了 STM32F030 的定时器 16 作为系统时钟,1ms 触发一次中断,过程中遇到一些值得记录的问题. 记录 STM32F030 中定时器 16 的初始化配置如下 v ...
- Pandas基本功能详解
Pandas基本功能详解 Pandas Pandas基本功能详解 |轻松玩转Pandas(2) 参考:Pandas基本功能详解 |轻松玩转Pandas(2)