1. 程式人生 > >time模組,random模組,OS模組,sys模組

time模組,random模組,OS模組,sys模組

time模組

在這裡插入圖片描述

時間展示

import time       #匯入模組
print(time.time())   #時間戳時間
print(time.strftime('%Y-%m-%d %x'))  #字串格式化時間
print(time.strftime('%Y-%m-%d %H:%M:%S'))

print(time.localtime())   #結構化時間本地時間
print(time.gmtime())         #結構化時間英國時間
#時間戳和格式化時間都是依賴於結構化時間
p = time.strptime('2018-6-16', '%Y-%m-%d')

輸出:
在這裡插入圖片描述

時間轉換

import time
print(time.gmtime(1500000000)) #時間戳-->結構化時間
print(time.localtime(1500000))

#結構化時間-->時間戳 
time_tuple = time.localtime(15000000)
print(time.mktime(time_tuple))

#結構化時間-->字串時間
print(time.strftime("%Y-%m-%d %x"))
print(time.strftime("%Y-%m-%d ", time.localtime(1800000000)))

#字串時間-->結構化時間
print(time.strptime("2018-10-17", "%Y-%m-%d"))
print(time.strptime("01/01/2018", "%m/%d/%Y"))

#結構化時間 --> %a %b %d %H:%M:%S %Y串
time.asctime(結構化時間) 如果不傳引數,直接返回當前時間的格式化串
print(time.asctime(time.localtime(150000000)))
print(time.asctime())

#時間戳 --> %a %b %d %H:%M:%S %Y串
time.ctime(時間戳)  如果不傳引數,直接返回當前時間的格式化串
print(time.ctime())
print(time.ctime(18000000))

python中的日期時間格式符號
1 %y 兩位數的年份表示(00-99)
2 %Y 四位數的年份表示(000-9999)
3 %m 月份(01-12)
4 %d 月內中的一天(0-31)
5 %H 24小時制小時數(0-23)
6 %I 12小時制小時數(01-12)
7 %M 分鐘數(00=59)
8 %S 秒(00-59)
9 %a 本地簡化星期名稱
10 %A 本地完整星期名稱
11 %b 本地簡化的月份名稱
12 %B 本地完整的月份名稱
13 %c 本地相應的日期表示和時間表示
14 %j 年內的一天(001-366)
15 %p 本地A.M.或P.M.的等價符
16 %U 一年中的星期數(00-53)星期天為星期的開始
17 %w 星期(0-6),星期天為星期的開始
18 %W 一年中的星期數(00-53)星期一為星期的開始
19 %x 本地相應的日期表示
20 %X 本地相應的時間表示
21 %Z 當前時區的名稱
22 %% %號本身
在這裡插入圖片描述


在這裡插入圖片描述

利用time計算時間差

import time
def cal_time(fmt_time, fmt):
    now = time.time()
    time_before = time.mktime(time.strptime(fmt_time, fmt))
    sub_time = now - time_before
    struct_time = time.gmtime(sub_time)
    return '過去了%d年%d月%d天%d小時%d分鐘%d秒' % (struct_time.tm_year - 1970, struct_time.tm_mon - 1,
                                        struct_time.tm_mday - 1, struct_time.tm_hour,
                                        struct_time.tm_min, struct_time.tm_sec)
ret = cal_time('2018-8-17 08:30:00', '%Y-%m-%d %H:%M:%S')

print(ret)

random模組

import random
#隨機小數
print(random.random())   # 大於0且小於1之間的小數
print(random.uniform(1, 4))  #大於1小於4的小數

#隨機整數
print(random.randrange(1, 2))
print(random.randint(1, 1000))    # 大於等於1且小於等於1000之間的整數
print(random.randrange(1, 20, 2))       # 大於等於1且小於10之間的奇數

#隨機選擇一個返回
print(random.choice([1, '23', [4, 5]]))  #1或者23或者[4,5]

隨機選擇多個返回
print(random.sample([1, '23', [4, 5]], 2))  #隨機選擇多個返回,返回的個數為函式的第二個引數


#打亂列表順序
item = [1, 3, 5, 7, 9]
random.shuffle(item)  #打亂次序
print(item)

基於random的驗證碼例子

def v_code():
    code = ''
    for i in range(5):
        num = random.randint(0, 9)
        alf = chr(random.randint(65, 90))
        add = random.choice([num, alf])
        code = "".join([code, str(add)])
    return code
print(v_code())

OS模組

在這裡插入圖片描述

os.path

在這裡插入圖片描述
例子

import os
print(os.getcwd())      # 獲取當前檔案所在的路徑
print(os.curdir)
print(os.pardir)
os.chdir("D:\\")
os.makedirs('dirname1/dirname2')        #建立多級目錄檔案
os.mkdir('dirname/son_dir')             #建立單級目錄檔案
os.removedirs('dirname1/d2')
print(os.listdir('D:\myPython'))
os.remove()#刪除一個檔案
print(os.stat(r'D:\myPython'))

print(os.name)
path = 'python%2.mok.py'%os.sep
os.system("dir")
ret = os.popen("dir").read()
print(ret)

print(os.path .abspath('userinfo') ) #絕對路徑

print(os.path.abspath('userinfo'))
print(os.path.split(os.path.abspath('userinfo')))
print(os.path.dirname(os.path.abspath('userinfo')))
print(os.path.basename(os.path.abspath('userinfo')))
print(os.path.exists(r'D:\python11\day28\userinfo2'))
print(os.path.isabs(r'userinfo2'))
print(os.path.isfile(r'userinfo'))
print(os.path.isdir(r'dirname1'))
print(os.path.join('D:\\python11\\day28','userinfo'))
print(os.path.getsize(r'D:\python11'))
print(os.path.getsize(r'D:\python'))

os.stat(‘path\filename’) 獲取檔案\目錄資訊的結構說明

stat 結構:
 
st_mode: inode 保護模式
st_ino: inode 節點號。
st_dev: inode 駐留的裝置。
st_nlink: inode 的連結數。
st_uid: 所有者的使用者ID。
st_gid: 所有者的組ID。
st_size: 普通檔案以位元組為單位的大小;包含等待某些特殊檔案的資料。
st_atime: 上次訪問的時間。
st_mtime: 最後一次修改的時間。
st_ctime: 由作業系統報告的"ctime"。在某些系統上(如Unix)是最新的元資料更改的時間,<br>在其它系統上(如Windows)是建立時間(詳細資訊參見平臺的文件)。
 

找一個別人的例子

import os
# 1.切換路徑=============
d = os.getcwd()  #獲取當前的工作路徑
os.chdir('D:\\')#目錄的切換
print(os.getcwd())
# (切換過去怎麼回來呢?再chdir一下就回來了)
os.chdir(d)
print(os.getcwd())

# 2.執行系統命令=============
# system和popen都是執行系統命令的,但是popen比較好用,因為它有返回值
os.system('dir') #顯示的是gbk的編碼,
# 解決system亂碼的方法
ret = os.popen('dir')  #popen是有返回值的,而且自己轉碼了
print(ret.read())

# 3.建立資料夾=和建立檔案==========
os.mkdir('temp')  #生成一個資料夾,,只能生成一個
os.mkdir(r'temp2\inner')  #這樣就報錯了
os.makedirs(r'temp1\inner',exist_ok=True)  #建立多級目錄
os.makedirs(r'temp1\inner\inner2',exist_ok=True)  #建立多級目錄
# 那麼如果資料夾已經存在了,就報錯了,那我如果不想
# 讓報錯(就是假如存在,就不建立也不報錯),那麼就加上exist_ok=True

# 建立檔案
f = open(r'temp1\inner\file','w')
f.close()

# 4.======重新命名資料夾=====
os.rename(r'temp1\inner\inner2','temp1\inner\haiyan')

# 5.=====刪除資料夾和刪除檔案=========
# 先刪檔案,
os.remove(r'temp1\inner\file')
# 再刪資料夾
os.removedirs(r'temp1\inner\haiyan') #刪除一個資料夾的時候,如果上一級的資料夾是空的,就一併刪除了。以此類推
os.rmdir((r'temp1\inner') )#只刪除一個資料夾

# 6.子目錄========
print(os.listdir(os.getcwd())) #列印當前目錄下的目錄
print(os.walk(os.getcwd())) #<generator object walk at 0x00000000021C6728>
ret = os.walk(os.getcwd()) #拿到的東西比較多,如果你關心子目錄下的東西,就用walk
print(list(ret))


# 7.====獲取檔案或者目錄的資訊的結構說明========
print(os.stat('temp'))
# st_atime:上次訪問的時間
# st_mtime:最後一次修改的時間
# st_ctime:最新的更新時間
print(os.sep) # 列印的是\
print(os.getcwd())
file_path = '%s%s%s'%(os.getcwd(),os.sep,'filename')  #拼接一個路徑(方式一)
print(file_path)
print(os.path.join(os.getcwd(),'filename'))#拼接一個路徑(方式二)

# 8.====字串指示當前使用平臺
print(os.name) #如果是win,則列印的是nt  如果是,linux,列印poxis
# 應用場景:當你輸入命令的時候,要判斷是win系統還是 linux系統。就可以用
# os.name去判斷了

# 9.===獲取系統環境變數=====
print(os.environ)

# 10.路徑相關的=======
print(os.path.abspath('namedtuple.py'))
print(os.path.dirname(os.path.abspath('namedtuple.py')))
print(os.path.dirname(os.path.dirname(os.path.abspath('namedtuple.py'))))
print(os.path.exists(os.path.abspath('namedtuple.py')))

sys模組

sys模組是與python直譯器互動的一個介面

sys.argv           命令列引數List,第一個元素是程式本身路徑
sys.exit(n)        退出程式,正常退出時exit(0),錯誤退出sys.exit(1)
sys.version        獲取Python解釋程式的版本資訊
sys.path           返回模組的搜尋路徑,初始化時使用PYTHONPATH環境變數的值
sys.platform       返回作業系統平臺名稱

例子:

import sys
print(sys.argv) #實現從程式外部向程式傳遞引數。(在命令列裡面輸開啟路徑執行)
name=sys.argv[1] #命令列引數List,第一個元素是程式的本身路徑
password = sys.argv[2]
if name=='egon' and password == '123':
    print('繼續執行程式')
else:
   exit()

sys.exit()#退出程式,正常退出時exit(0)
print(sys.version)#獲取python解釋的版本資訊
print(sys.maxsize)#最大能表示的數,與系統多少位有關
print(sys.path)#返回模組的搜尋路徑,初始化時使用PYTHONPATH環境變數的值
print(sys.platform)#返回作業系統平臺名稱
print(sys.argv) #['D:/myPython/sys模組.py']列表。當前檔案的檔案路徑
#執行一個程式有兩種方法:(1)debug執行;(2)直接執行
import logging
inp = sys.argv[1] if len(sys.argv) > 1 else 'warning'
logging.basicConfig(level=getattr(logging, 'DEBUG'))
num = (input(">>>"))
logging.debug(num)
a = num * 100
logging.debug(a)
b = a - 10
logging.debug(b)
c = b + 5
print(c)