python环境变量 执行系统命令 退出进程 时间模块使用 随机数及哈希模块使用 argparse模块使用
- 2015-04-18 14:32:00
- admin
- 原创 3952
一、python环境变量
system()、popen()、fork()、execv()等函数使用环境变量。
获取环境变量:推荐使用函数,变量不存在时函数返回None,读字典会抛异常。
os.getenv('PATH')
os.environ['PATH']
设置环境变量:推荐使用字典,只能直接写字典,有些平台不支持函数。
os.environ['APP'] = 'python'
os.putenv('APP', 'python')
二、执行系统命令
1、os.system不能返回命令输出,命令输出直接输出到了控制台,而是返回命令返回值;
2、os.popen返回命令管道文件,调用管道文件close方法获取命令返回值,如果是0则返回None;
import os
print os.system('ls -al')
output = os.popen('ls -al')
for line in output:
print line,
print output.close()
三、退出进程
1、sys.exit(0),抛出异常SystemExit,finally会被处理;
2、os._exit(0),不会抛出任何异常,finally不会被处理;
四、时间模块使用
time模块:
1、time.sleep(secs),休眠进程,参数是浮点数;
2、time.time(),返回当前时间戳,返回值是浮点数;
3、time.struct_time,结构体最小成员是秒,不能表示毫秒;
4、time.localtime([secs]),将时间戳转换为本地时间的结构体;
5、time.mktime(time.struct_time),将时间结构体转换为时间戳;
6、time.strftime(format[, t]),格式化时间,比如time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
7、time.clock(),windows返回第一次调用以来的墙上时间,linux返回进程启动以来消耗的cpu时间,结果都以秒为单位;
datetime.datetime日期时间类:
1、当前日期时间:datetime.datetime.today()
2、当前日期时间:datetime.datetime.fromtimestamp(time.time())
3、日期时间替换:datetime.datetime.replace(year,month,day)
4、日期时间加减:delta=datetime.timedelta(weeks,days...), newDate=date+delta
5、日期时间比较:datetime1<datetime2, datetime1>datetime2
6、格式化输出:datetime.datetime.strftime('%Y-%m-%d %H:%M:%S')
7、转换为秒数:time.struct_time=datetime.datetime.timetuple()
datetime.date日期类:
1、当前日期:datetime.date.today()
2、当前日期:datetime.date.fromtimestamp(time.time())
3、日期替换:datetime.date.replace(year,month,day)
4、日期加减:delta=datetime.timedelta(weeks,days), newDate=date+delta
5、日期比较: date1<date2, date1>date2
6、格式化输出:datetime.date.strftime('%Y-%m-%d')
7、转换为秒数:time.struct_time=datetime.date.timetuple()
datetime.time时间类:
1、时间构造:datetime.time(hour,minute,second,microsecond)
2、时间替换:datetime.time.replace(hour,minute,second,microsecond)
3、时间比较: time1<time2, time1>time2
4、格式化输出:datetime.time.strftime('%H:%M:%S')
五、随机数及哈希模块使用
random使用介绍:
1、random使用全局的Random对象,Random用于生成伪随机数;
2、random的函数非线程安全,线程安全需要单独生成Random对象;
3、random.random(),[0.0, 1.0)
4、random.randint(a,b),[a, b]
5、random.choice(['a','b']),随机选择
6、random.shuffle(list),打乱列表
secrets使用介绍:
1、帮助文档:https://docs.python.org/zh-cn/3.14/library/secrets.html
2、secrets使用全局的SystemRandom对象,SystemRandom提供密码学安全随机源;
3、secrets的函数线程安全,也可以单独生成SystemRandom对象;
4、secrets.token_hex(16),随机十六进制字符串
5、secrets.token_urlsafe(16),URL安全随机字符串
6、secrets.token_bytes(16),随机字节
7、secrets.choice(['a','b']) ,安全随机选择
8、secrets.randbelow(10) ,0~9安全随机整数
generate_token使用介绍:
from oauthlib import common
data = common.generate_timestamp() #UTC秒数
data = common.generate_nonce() #8字节随机数+UTC秒数
data = common.generate_token() #[a-zA-Z0-9]
hashlib使用介绍:
hash = hashlib.md5('myname')
print hash.digest_size
print hash.hexdigest()
六、argparse模块使用
1、用于自动解析命令行参数,使用非常方便;
2、ArgumentParser:description显示在参数帮助之前,epilog显示在参数帮助之后;
3、ArgumentParser:error方法在解析参数出错时退出进程,子类可以进行重写;
参数说明:
1、位置参数:按位置顺序匹配,必须提供,无默认值;
2、可选参数:以 - 或 -- 开头,可以不提供,有默认值;
3、可选列表参数:choices限制只能从指定列表中选择;
4、可选布尔参数:action限制参数为布尔参数;
5、可选布尔参数:action="store_true",出现即为True
6、可选布尔参数:action="store_false",出现即为False
7、可选多值参数:nargs="+",多值参数和位置参数使用 -- 分割;