sys: 它是和python运行环境相关的模块
常用sys模块功能
查看模块查找目录 :sys.path
查看当前导入的模块 :sys.modules
查看当前操作系统 :sys.platform
查看所有内嵌的模块 :sys.builtin_module_names
退出当前程序 :sys.exit([n]) ---- 当n 为非0时,引发一个SystemExit异常
有时参数为字符串时,字符串会成为退出的提示信息。
这也和python版本相关,有时并不会引发一个系统导常,而是会返回一个类似
bash的状态码(需要使用linux执行)
程序接受参数 : sys.argv
sys.argv :表示当前程序所有参数
sys.argv[0] :表示当前程序名
sys.argv[1] :表示当前程序第一个参数
sys.argv[2] :表示当前程序第二个参数
例: 用户使用命令行的方式进行传递参数,参数可以是任意多个,将所有数字参数求和
# ./test.py 1 2 3 ab cd 100 ==> 106
参考:
import sys
def listadd(L):
ret = 0
for i in L:
try:
i = int(i.strip())
except:
pass
else:
ret += i
return ret
if __name__ == '__main__':
args = sys.argv[1:]
ret = listadd(args)
print(ret)
os模块和操作系统相关
方 法 示 例 说 明
os.name os.name 返回当前系统类型
os.getcwd() os.getcwd() 返回当前工作路径
os.listdir() os.listdir() 返回当前目录中所有文件及目录
os.remove() os.remove('1.txt') 删除 1.txt 文件
os.rmdir() os.rmdir('tmp') 删除tmp目录,tmp必须为空目录
os.mkdir() os.mkdir('tmp') 创建tmp目录
os.chdir() os.chdir('/root') 切换目录
os.makedirs() os.makedirs('a/b/c') 创建多级目录
os.path.isfile() os.path.isfile('6.txt') 判断6.txt 是否为文件
os.path.isdir() os.path.isdir('tmp') 判断tmp是否为目录
os.path.exists() os.path.exists('b') 判断 文件或目录是否存在
os.path.abspath() os.path.abspath('6.txt') 返回 6.txt 文件的绝对目录
os.path.basename() os.path.basename('/root/a.txt') 获取文件名
os.path.dirname() os.path.dirname('/root/a.txt') 获取目录名
os.system() os.system('ls -l') 执行系统命令,执行ls -l命令
os.popen() ret = os.popen('ls -l') 执行系统命令,将结果放入到ret中,ret是一个文件对象。
例: 使用os模块执行shell命令,得到/boot目录中所有文件的大小总和
import os
def get_dirsize(dir):
size = 0
file = os.popen(‘ls -l {}’.format(dir))
file.readline()
for line in file:
tmp = line.split()[4]
size += int(tmp)
return size
if name == ‘main’:
dir = ‘/boot’
ret = get_dirsize(dir)
print(ret,“Bytes”)
shutil 常用函数
os模块在处理文件和目录时有不足之处,比如删除有文件的目录等,shutil是一个强有力的补充。
方 法 示 例 说 明
shutil.copy() shutil.copy('test.py','test.bak') 拷贝文件
shutil.copytree() shutil.copytree('tmp','tmp.d') 拷贝目录,目录可以非空
shutil.rmtree() shutil.rmtree('tmp') 递归删除文件夹
shutil.move() shutil.move('6.txt','../6.bak') 移动文件,也可以重命名
math 常用函数
方 法 示 例 说 明
round() round(2.1251,2) --> 2.13 round(123456,-1) --> 123460
精确十位 四舍五入,保留2位小数,是python自带函数,不是math中的(python3 取消)
math.ceil() math.ceil(2.3) --> 3 向上取整
math.floor() math.floor(2.8) --> 2 向下取整
math.sqrt() math.sqrt(4) --> 2.0 开方
math.pow() math.pow(2,3) --> 8.0 乘方
math.log() math.log(100,10) --> 2.0 求以10为底100的对数,默认底为 e
math.e math.e --> 2.7182818284 自然底数
math.pi math.pi --> 3.141592653 圆周率
math.degrees() math.degrees(math.pi) --> 180.0 转弧度转换为角度
math.radians(180) math.radians(180) --> 3.1415926 角度转换为弧度
sin cos tan asin acos atan 三角函数与反三角函数(参数必须为弧度)
factorial 求阶乘: 5! = 1*2*3*4*5
一个圆的角度为360度,一个圆的弧度为2 pi
一般使用程序计算三角函数时要使用弧度
sin 正弦 一个直角三角形中对边比斜边(根据弧度求比值)
cos 余弦 一个直角三角形中邻边比斜边(根据弧度求比值)
tan 正切 一个直角三角形中对边比邻边(根据弧度求比值)
asin 反正弦 根据比值求弧度
时间模块 time
有三种时间形式 时间戳 字符串 时间元组
常用方法:
time() time.time() 获取时间戳
localtime() T = time.localtime()
time.localtime(1514166766.0) 当前时间的时间元组根据时间戳产生时间元组
mktime() time.mktime(T) 根据时间元组生成时间戳
sleep() time.sleep(n) 程序暂停 n 秒
strptime() T = time.strptime('2017-11-12','%Y-%m-%d') 将日期变成时间元组 T
strftime() time.strftime('%Y-%m-%d',T) 将时间元组变成字符串
例1: 得到当前时间的时间戳及时间元组,得到格林尼治时间
time.time()
time.localtime()
time.gmttime()
例2: 将时间戳1555526007 变成时间元组
import time
tmp = 1555526007
ret = time.localtime(tmp)
print(ret)
例3: 将例2中的时间元组变成时间戳
tmp = 例 2中的元组
ret = time.mktime(tmp)
print(ret)
例4: 将字符串 ‘2018-10-11 12:13:14’ 变成时间戳(无法直接变,可以先变成时间元组)
import time
tmp = ‘2018+10-11 12:13:14’
ret = time.strptime(tmp,’%Y+%m-%d %H:%M:%S’)
ret = time.mktime(ret)
print(ret)
例5: 将时间戳1555526007 变成字符串(无法直接变,可以先变成时间元组)
import time
tmp = 1555526007
tmp = time.localtime(tmp)
ret = time.strftime(’%Y/%m/%d %H:%M’,tmp)
print(ret)
datetime 模块(django等框架使用)
因为datetime中有很多子模块,我们一般使用其中的两个 from datetime import datetime,timedelta)
datetime对象可以比较大小
可以直接构建datetime对象 datetime(2009,10,11,15,16,20)
例1: 得到当前时间的datetime对象及时间戳
from datetime import datetime
now = datetime.now()
print(now)
ret = now.timestamp()
print(ret)
例2: 将字符串 ‘2018-10-11 12:13:14’ 变成时间戳(无法直接变,可以先变成datetime对象)
from datetime import datetime
tmp = '2018-10-11 12:13:14'
ret = datetime.strptime(tmp,'%Y-%m-%d %H:%M:%S')
ret = ret.timestamp()
print(ret)
例3: 将时间戳 123456789 变成一个字符串
from datetime import datetime
tmp = 123456789
ret = datetime.fromtimestamp(tmp)
ret = ret.strftime('%Y/%m/%d %H:%M:%S')
print(ret)
例: 在原来时间的基础上增加各减少五天
注意: 也可以直接使用时间戳进行运算
from datetime import datetime,timedelta
now = datetime.now()
delta = timedelta(days=5)
print(now-delta)
print(now)
print(now + delta)