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)