python內置模塊[sys,os,os.path,stat]


python內置模塊[sys,os,os.path,stat]

內置模塊是python自帶功能,在使用內置模塊時,需要遵循 先導入使用

一、sys

對象 描述
sys.argv 命令行參數獲取,返回類型為列表,第一個元素為程序的本身的路徑
sys.path 返回模塊的搜索路徑列表,第一個元素為當前程序所在目錄;初始化時使用PYTHONPATH環境變量的值
sys.modules.keys() 返回所有已經導入的模塊列表
sys.modules 返回所有已經導入的模塊字典,key模塊名,value是模塊路徑
sys.exc_info() 獲取當前正在處理的異常類,exc_type,exc_value,exc_traceback當前處理的異常詳細信息
sys.exc_clear() 用來清除當前線程所出現的當前的或最近的錯誤信息
sys.exec_prefix 返回python文件安裝的位置
sys.exit(n) 退出程序,正常退出時exit(0)
sys.hexversion 獲取python解釋程序的版本值,16進制格式如:0x020103F0
sys.version 獲取python解釋程序的版本信息
sys.displayhook(value) 如果value非空,這個函數會把他輸出到sys.stdout(詳細使用參考文檔)
sys.excepthook 異常回溯相關
sys.stdin 標准輸入
sys.stdin.read() 輸入一行
sys.stdin.readline() 從標准輸入讀一行,sys.stdout.write("a") 屏幕輸出a
sys.stdout 標准輸出
sys.stdout.write(‘aaa’) 標准輸出內容
sys.stdout.writelines() 無換行輸出
sys.stderr 錯誤相關
sys.pathform 返回操作系統平台名稱
sys.byteorder 本地字節規則的指示器,big-endian平台的值是’big’,little-endian平台的值是’little’
sys.copyright 記錄python版權相關的東西
sys.api_version 解釋器的C的API版本
sys.version_info 'final'表示最終,也有'candidate'表示候選,表示版本級別,是否有后繼的發行
sys.getdefaultencoding() 返回當前你所用的默認的字符編碼格式
sys.getfilesystemencoding() 返回將Unicode文件名轉換成系統文件名的編碼的名字
sys.builtin_module_names Python解釋器導入的內建模塊列表
sys.executable Python解釋程序路徑
sys.getwindowsversion() 獲取Windows的版本
   

二、os模塊

對象 描述
os.remove() 刪除文件
os.unlink() 刪除文件
os.rename() 重命名文件
os.listdir() 列出指定目錄下所有文件
os.curdir 返回當前目錄: ('.')
os.pardir 獲取當前目錄的父目錄字符串名:('..')
os.chdir() 改變當前工作目錄
os.getcwd() 獲取當前文件路徑
os.mkdir() 新建目錄
os.rmdir() 刪除空目錄(刪除非空目錄, 使用shutil.rmtree())
os.makedirs() 創建多級目錄
os.removedirs() 刪除多級目錄
os.stat(file) 獲取文件屬性
os.chmod(file) 修改文件權限
os.utime(file) 修改文件時間戳
os.name 獲取操作系統標識,字符串指示當前使用平台。win->'nt'; Linux->'posix'
os.sep 操作系統特定的路徑分隔符,win下為"\\",Linux下為"/"
os.linesep 當前平台使用的行終止符,win下為"\r\n",Linux下為"\n"
os.pathsep 用於分割文件路徑的字符串
os.environ 獲取系統環境變量
os.system() 執行操作系統命令
os.execvp() 啟動一個新進程
os.access(path, mode) 判斷文件權限
os.wait() 等待任何一個子進程結束,返回一個tuple,包括子進程的進程ID和退出狀態信息

三、os.path模塊

os.path.getctime()返回文件創返回文件大小 字節單位建時間 浮點型os.path.getsize()

對象 描述
os.path.split(filename) 將文件路徑和文件名分割(會將最后一個目錄作為文件名而分離)
os.path.splitext(filename) 將文件路徑和文件擴展名分割成一個元組
os.path.dirname(filename) 返回文件路徑的目錄部分
os.path.basename(filename) 返回文件路徑的文件名部分
os.path.join(dirname,basename) 將文件路徑和文件名湊成完整文件路徑
os.path.abspath(name) 獲得絕對路徑
os.path.splitunc(path) 把路徑分割為掛載點和文件名
os.path.normpath(path) 規范path字符串形式
os.path.exists() 判斷文件或目錄是否存在
os.path.isabs() 如果path是絕對路徑,返回True
os.path.realpath(path) 返回path的真實路徑
os.path.relpath(path[, start]) 從start開始計算相對路徑
os.path.normcase(path) 轉換path的大小寫和斜杠
os.path.isdir(name) 判斷name是不是一個目錄,name不是目錄就返回false
os.path.isfile(name) 判斷name是不是一個文件,不存在返回false
os.path.islink() 判斷文件是否連接文件,返回boolean
os.path.ismount() 指定路徑是否存在且為一個掛載點,返回boolean
os.path.samefile() 是否相同路徑的文件,返回boolean
os.path.getatime() 返回最近訪問時間 浮點型
os.path.getmtime() 返回上一次修改時間 浮點型
os.path.getctime() 返回文件創建時間 浮點型
os.path.getsize() 返回文件大小 字節單位
os.path.commonprefix(list) 返回list(多個路徑)中,所有path共有的最長的路徑
os.path.lexists 路徑存在則返回True,路徑損壞也返回True
os.path.expanduser(path) 把path中包含的"~"和"~user"轉換成用戶目錄
os.path.expandvars(path) 根據環境變量的值替換path中包含的”$name”和”${name}”
os.path.sameopenfile(fp1, fp2) 判斷fp1和fp2是否指向同一文件
os.path.samestat(stat1, stat2) 判斷stat tuple stat1和stat2是否指向同一個文件
os.path.splitdrive(path) 一般用在windows下,返回驅動器名和路徑組成的元組
os.path.walk(path, visit, arg) 遍歷path,給每個path執行一個函數詳細見手冊
os.path.supports_unicode_filenames 設置是否支持unicode路徑名

四、stat模塊:描述os.stat()返回的文件屬性列表中各值的意義

對象 描述
fileStats = os.stat(path) 獲取到的文件屬性列表
fileStats[stat.ST_MODE] 獲取文件的模式
fileStats[stat.ST_SIZE] 文件大小
fileStats[stat.ST_MTIME] 文件最后修改時間
fileStats[stat.ST_ATIME] 文件最后訪問時間
fileStats[stat.ST_CTIME] 文件創建時間
stat.S_ISDIR(fileStats[stat.ST_MODE]) 是否目錄
stat.S_ISREG(fileStats[stat.ST_MODE]) 是否一般文件
stat.S_ISLNK(fileStats[stat.ST_MODE]) 是否連接文件
stat.S_ISSOCK(fileStats[stat.ST_MODE]) 是否COCK文件
stat.S_ISFIFO(fileStats[stat.ST_MODE]) 是否命名管道
stat.S_ISBLK(fileStats[stat.ST_MODE]) 是否塊設備
stat.S_ISCHR(fileStats[stat.ST_MODE]) 是否字符設置

五、hashlib:

用於加密相關的操作,代替md5模塊和sha模塊,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法

>>> import hashlib
####### md5 #######
>>> hash.update(bytes('admin',encoding='utf-8'))
>>> print(hash.hexdigest())
21232f297a57a5a743894a0e4a801fc3
>>> print(hash.digest())
b'!#/)zW\xa5\xa7C\x89J\x0eJ\x80\x1f\xc3'
####### sha1 #######
>>> hash = hashlib.sha1()
>>> hash.update(bytes('admin',encoding='utf-8'))
>>> print(hash.hexdigest())
d033e22ae348aeb5660fc2140aec35850c4da997
>>> print(hash.digest())
b'\xd03\xe2*\xe3H\xae\xb5f\x0f\xc2\x14\n\xec5\x85\x0cM\xa9\x97'
####### sha256 #######
>>> hash = hashlib.sha256()
>>> hash.update(bytes('admin',encoding='utf-8'))
>>> print(hash.hexdigest())
8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
>>> print(hash.digest())
b'\x8civ\xe5\xb5A\x04\x15\xbd\xe9\x08\xbdM\xee\x15\xdf\xb1g\xa9\xc8s\xfcK\xb8\xa8\x1fo*\xb4H\xa9\x18'
####### sha384 #######
>>> hash = hashlib.sha384()
>>> hash.update(bytes('admin',encoding='utf-8'))
>>> print(hash.hexdigest())
9ca694a90285c034432c9550421b7b9dbd5c0f4b6673f05f6dbce58052ba20e4248041956ee8c9a2
ec9f10290cdc0782
>>> print(hash.digest())
b'\x9c\xa6\x94\xa9\x02\x85\xc04C,\x95PB\x1b{\x9d\xbd\\\x0fKfs\xf0_m\xbc\xe5\x80R\xba \xe4$\x80A\x95n\xe8\xc9\xa2\xec\x9f\x10)\x0c\xdc\x07\x82'
####### sha512 #######
>>> hash = hashlib.sha512()
>>> hash.update(bytes('admin',encoding='utf-8'))
>>> print(hash.hexdigest())
c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec
>>> print(hash.digest())
b'\xc7\xadD\xcb\xadv*]\xa0\xa4R\xf9\xe8T\xfd\xc1\xe0\xe7\xa5*8\x01_#\xf3\xea\xb1\xd8\x0b\x93\x1d\xd4rcM\xfa\xc7\x1c\xd3N\xbc5\xd1j\xb7\xfb\x8a\x90\xc8\x1f\x97Q\x13\xd6\xc7S\x8d\xc6\x9d\xd8\xde\x90w\xec'

以上加密算法雖然非常厲害,但存在缺陷,即:通過密碼庫可以反解.所以,有必要對加密算法中添加自定義key再來做加密.

>>> import hashlib
>>> hash = hashlib.md5(bytes('89oaFs09f',encoding='utf-8'))
>>> hash.update(bytes('admin',encoding='utf-8'))
>>> print(hash.hexdigest())
0f102151d38af213af2d4f73d459d69c
>>> print(hash.digest())
b'\x0f\x10!Q\xd3\x8a\xf2\x13\xaf-Os\xd4Y\xd6\x9c'

python內置還有一個hmac模塊,它內部對我們創建key和內容進行進一步的處理,然后再加密

>>> import hmac
>>> h = hmac.new(bytes('898oaFs09f',encoding='utf-8'))
>>> h.update(bytes('admin',encoding='utf-8'))
>>> print(h.hexdigest())
17186c513df61e8b3fb4a134f474b130
>>> print(h.digest())
b'\x17\x18lQ=\xf6\x1e\x8b?\xb4\xa14\xf4t\xb10'

六、random模塊:

對象 描述
random.random() 產生0-1的隨機浮點數
random.uniform(a, b) 產生指定范圍內的隨機浮點數
random.randint(a, b) 產生指定范圍內的隨機整數
random.randrange([start], stop[, step]) 從一個指定步長的集合中產生隨機數
random.choice(sequence) 從序列中產生一個隨機數
random.shuffle(x[, random]) 將一個列表中的元素打亂
random.sample(sequence, k) 從序列中隨機獲取指定長度的片斷
import random
checkcode = ''
for i in range(4):
    current = random.randrange(0,4)
    if current != i:
        temp = chr(random.randint(65,90))
    else:
        temp = random.randint(0,9)
    checkcode += str(temp)
print(checkcode)
 
隨機驗證碼

七、time&datetime&date模塊

datetime.date.today() 本地日期對象,(用str函數可得到它的字面表示('2016-12-24'))
datetime.date.isoformat(obj) 當前[年-月-日]字符串表示('2016-12-24')
datetime.date.fromtimestamp() 返回一個日期對象,參數是時間戳,返回 [年-月-日]
datetime.date.weekday(obj) 返回一個日期對象的星期數,周一是0
datetime.date.isoweekday(obj) 返回一個日期對象的星期數,周一是1
datetime.date.isocalendar(obj)  把日期對象返回一個帶有年周星期的元組
datetime.datetime.today() 返回一個包含本地時間(含微秒數)的datetime對象,如datetime.datetime(2016, 12, 24, 11, 1, 59, 365506)
datetime.datetime.now() 返回指定時區的datetime對象,datetime.datetime(2016, 12, 24, 11, 2, 50, 132996)
datetime.datetime.utcnow() 返回一個零時區的datetime對象
datetime.utcfromtimestamp(timestamp) 按時間戳返回一個UTC-datetime對象
datetime.datetime.strptime('2014-03-16 12:21:21',"%Y-%m-%d %H:%M:%S") 將字符串轉為datetime對象,datetime.datetime.strptime('2016-01-01 12:11:12','%Y-%m-%d %X')
datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%d  %H:%M:%S') 將datetime對象轉換為str表示形式
datetime.date.today().timetuple() 轉換為時間戳datetime元組對象,可用於轉換時間戳
datetime.datetime.now().timetuple() 轉換為時間戳datetime元組對象,可用於轉換時間戳
time.mktime(timetupleobj) 將datetime元組對象轉為時間戳
time.time() 當前時間戳
time.localtime 當前時間對象
time.gmtime 當前UTC時間對象
#_*_coding:utf-8_*_
__author__ = 'Alex Li'

import time


# print(time.clock()) #返回處理器時間,3.3開始已廢棄 , 改成了time.process_time()測量處理器運算時間,不包括sleep時間,不穩定,mac上測不出來
# print(time.altzone)  #返回與utc時間的時間差,以秒計算\
# print(time.asctime()) #返回時間格式"Fri Aug 19 11:14:16 2016",
# print(time.localtime()) #返回本地時間 的struct time對象格式
# print(time.gmtime(time.time()-800000)) #返回utc時間的struc時間對象格式

# print(time.asctime(time.localtime())) #返回時間格式"Fri Aug 19 11:14:16 2016",
#print(time.ctime()) #返回Fri Aug 19 12:38:29 2016 格式, 同上



# 日期字符串 轉成  時間戳
# string_2_struct = time.strptime("2016/05/22","%Y/%m/%d") #將 日期字符串 轉成 struct時間對象格式
# print(string_2_struct)
# #
# struct_2_stamp = time.mktime(string_2_struct) #將struct時間對象轉成時間戳
# print(struct_2_stamp)



#將時間戳轉為字符串格式
# print(time.gmtime(time.time()-86640)) #將utc時間戳轉換成struct_time格式
# print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) ) #將utc struct_time格式轉成指定的字符串格式





#時間加減
import datetime

# print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925
#print(datetime.date.fromtimestamp(time.time()) )  # 時間戳直接轉成日期格式 2016-08-19
# print(datetime.datetime.now() )
# print(datetime.datetime.now() + datetime.timedelta(3)) #當前時間+3天
# print(datetime.datetime.now() + datetime.timedelta(-3)) #當前時間-3天
# print(datetime.datetime.now() + datetime.timedelta(hours=3)) #當前時間+3小時
# print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #當前時間+30分


#
# c_time  = datetime.datetime.now()
# print(c_time.replace(minute=3,hour=2)) #時間替換

模塊詳解:http://www.cnblogs.com/fclbky/articles/4098204.html

格式化字符串:strftime() 和 strptime()
date, datetime, 和 time 對象均支持使用 strftime(format) 方法,將指定的日期或時間轉換為自定義的格式化字符串
相反的,datetime.strptime() 類方法卻是把格式化字符串轉換為 datetime 對象

格式化指令 含義
%a 星期的簡寫(星期一 ~ 天:Mon, Tue, Wed, Thu, Fri, Sat, Sun)
%A 星期的全寫(星期一 ~ 天:Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)
%w 在一個星期中的第幾天( 0 表示星期天 ... 6 表示星期六)
%d 在一個月中的第幾天(01, 02, ..., 31)
%b 月份的簡寫(一月 ~ 十二月:Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)
%B 月份的全寫(一月 ~ 十二月:January, February, March, April, May, June, July, August, September, October, November, December)
%m 月份(01, 02, ..., 12)
%y 用兩個數字表示年份(例如 2014年 == 14)
%Y 用四個數字表示年份
%H 二十四小時制(00, 01, ..., 23)
%I 十二小時制(01, 02, ..., 11)
%p AM 或者 PM
%M 分鍾(00, 01, ..., 59)
%S 秒(00, 01, ..., 59)
%f 微秒(000000, 000001, ..., 999999)
%z 與 UTC 時間的間隔 ;如果是本地時間,返回空字符串((empty), +0000, -0400, +1030)
%Z 時區名稱;如果是本地時間,返回空字符串((empty), UTC, EST, CST)
%j 在一年中的第幾天(001, 002, ..., 366)
%U 在一年中的第幾周,星期天作為第一天(00, 01, ..., 53)
%W 在一年中的第幾周,星期一作為第一天(00, 01, ..., 53)
%c 用字符串表示日期和時間(Tue Aug 16 21:30:00 2014)
%x 用字符串表示日期(08/16/14)
%X 用字符串表示時間(21:30:00)
%% 表示百分號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM