python环境变量 执行系统命令 退出进程 时间模块使用 随机数及哈希模块使用 argparse模块使用

2015-04-18 14:32:00
admin
原创 3952
摘要:python环境变量 执行系统命令 退出进程 时间模块使用 随机数及哈希模块使用 argparse模块使用

一、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="+",多值参数和位置参数使用 -- 分割;

发表评论
评论通过审核之后才会显示。