python note 17 random、time、sys、os模塊

一、random模塊(取隨機數模塊)python

# 取隨機小數 : 數學計算dom

import random
print(random.random())# 取0-1之間的小數
print(random.uniform(1,2))# 取1-2之間的小數

# 取隨機整數 : 彩票 抽獎函數

import random
print(random.randint(1,2)) #頭和尾都取獲得
print(random.randrange(1,2)) # 取不到尾部
print(random.randrange(1,200,2)) # 按步數進行隨機取數

# 從一個列表中隨機抽取值 : 抽獎spa

l = ['a','b',(1,2),123]
print(random.choice(l))# 選擇列表中一個進行隨機取值,若是進行屢次會取到重複的值
print(random.sample(l,2))# 選取兩個值,兩個值不會重複

# 打亂一個列表的順序,在原列表的基礎上直接進行修改,節省空間操作系統

l = ['a','b',(1,2),123]
random.shuffle(l)
print(l)

 

#驗證碼練習命令行

# 4位數字驗證碼code

import random

s = ''
for i in range(4):
    num = random.randint(0,9)
    s += str(num)
print(s)

# 6位數字驗證碼orm

import random
def code(n = 6):
    s = ''
    for i in range(n):
        num = random.randint(0,9)
        s += str(num)
    return s
print(code(6))

# 6位數字+字母驗證碼blog

import random
s = ''
for i in range(6):
    num = str(random.randint(0,9))
    alpha_upper = chr(random.randint(65,90))
    alpha_lower = chr(random.randint(97, 122))
    ret = random.choice([num,alpha_upper,alpha_lower])
    s += ret
print(s)

# 函數版本內存

import random
def code(n = 6):
    s = ''
    for i in range(n):
        # 生成隨機的大寫字母,小寫字母,數字各一個
        num = str(random.randint(0,9))
        alpha_upper = chr(random.randint(65,90))
        alpha_lower = chr(random.randint(97,122))
        res = random.choice([num,alpha_upper,alpha_lower])
        s += res
    return s
print(code(4))

# 進階

import random
def code(n = 6,alpha = True):
    s = ''
    for i in range(n):
        num = str(random.randint(0,9))
        if alpha:
            alpha_upper = chr(random.randint(65,90))
            alpha_lower = chr(random.randint(97,122))
            num = random.choice([num,alpha_upper,alpha_lower])
        s += num
    return s
print(code(4,False))

 

二、time模塊

# time模塊主要是用來和時間打交道的

# 時間戳時間

import time
print(time.time())

# 格式化時間

print(time.strftime('%Y-%m-%d %H:%M:%S')) 
print(time.strftime('%y-%m-%d %H:%M:%S')) 
print(time.strftime('%c'))

# 結構化時間

struct_time = time.localtime()  # 北京時間
print(struct_time)
print(struct_time.tm_mon)

# 時間戳換成字符串時間

struct_time = time.localtime(1500000000)
ret = time.strftime('%y-%m-%d %H:%M:%S',struct_time)
print(ret)

# 字符串時間 轉 時間戳

struct_time = time.strptime('2018-8-8','%Y-%m-%d')
res = time.mktime(struct_time)
print(res)

1.查看一下2000000000時間戳時間表示的年月日

struct_t = time.localtime(2000000000)
print(time.strftime('%Y-%m-%d',struct_t))

2.將2008-8-8轉換成時間戳時間

t = time.strptime('2008-8-8','%Y-%m-%d')
print(time.mktime(t))

3.請將當前時間的當前月1號的時間戳時間取出來 - 函數

def get_time():
    st = time.localtime()
    st2 = time.strptime('%s-%s-1'%(st.tm_year,st.tm_mon),'%Y-%m-%d')
    return time.mktime(st2)
print(get_time())

4.計算時間差 - 函數

  # 2018-8-19 22:10:8 2018-8-20 11:07:3
  # 通過了多少時分秒

str_time1 = '2018-8-19 22:10:8'
str_time2 = '2018-8-20 11:07:3'
struct_t1 = time.strptime(str_time1,'%Y-%m-%d %H:%M:%S')
struct_t2 = time.strptime(str_time2,'%Y-%m-%d %H:%M:%S')
timestamp1 = time.mktime(struct_t1)
timestamp2 = time.mktime(struct_t2)
sub_time = timestamp2 - timestamp1
gm_time = time.gmtime(sub_time)
# 1970-1-1 00:00:00
print('過去了%d年%d月%d天%d小時%d分鐘%d秒'%(gm_time.tm_year-1970,gm_time.tm_mon-1,
                                 gm_time.tm_mday-1,gm_time.tm_hour,
                                 gm_time.tm_min,gm_time.tm_sec))

三、sys模塊

# sys 是和Python解釋器打交道的

print(sys.argv)  # argv的第一個參數 是python這個命令後面的值

#兩種不一樣的傳值

import sys
usr = input('username')
pwd = input('password')
usr = sys.argv[1]
pwd = sys.argv[2]
if usr == 'alex' and pwd == 'alex3714':
    print('登陸成功')
else:
    exit()

# 是咱們導入到內存中的全部模塊的名字 : 這個模塊的內存地址

import re
print(sys.modules['re'].findall('\d','abc126'))

四、os模塊

# os是和操做系統交互的模塊

os.makedirs('dir1/dir2')
os.mkdir('dir3') # 只能建立一個
os.mkdir('dir3/dir4') #只有3存在才能建立4

# 只能刪空文件夾
os.rmdir('dir3/dir4')
os.removedirs('dir3/dir4')
os.removedirs('dir1/dir2')

# exec/eval執行的是字符串數據類型的 python代碼

# os.system和 os.popen是執行字符串數據類型的 命令行代碼

os.'system('dir')  # 執行操做系統的命令,沒有返回值,實際的操做/刪除一個文件 建立一個文件夾 exec
ret = os.popen('dir) # 是和作查看類的操做
s =ret.read()
print(s)

# os.listdir()列舉目錄下的全部文件。返回的是列表類型。

file_lst = os.listdir('D:\sylar\s15')
for path in file_lst:
    print(os.path.join('D:\sylar\s15',path))

#os.path.join()將path進行組合,若其中有絕對路徑,則以前的path將被刪除。

path = os.path.join('D:\\pythontest\\b', 'D:\\pythontest\\a')
print(path)
#輸出D:\pythontest\a

# os.getcwd()  # 查看當前工做目錄

os.chdir('D:\sylar\s15\day18')  # 切換當前的工做目錄
ret = os.popen('dir') # 是和作查看類的操做
s =ret.read()
print(s)

# os.path.abspath()

#把路徑中不符合規範的/改爲操做系統默認的格式
path = os.path.abspath('D:/sylar/s15/day19/4.os模塊.py')
print(path)
#可以給能找到的相對路徑改爲絕對路徑
path = os.path.abspath('4.os模塊.py')
print(path)

#os.path.split() 就是把一個路徑分紅兩段,第二段是一個文件/文件夾

path= os.path.split('D:/sylar/s15/day19/4.os模塊.py')
print(path)
#輸出('D:/sylar/s15/day19', '4.os模塊.py')
path= os.path.split('D:/sylar/s15/day19')
print(path)
#輸出('D:/sylar/s15', 'day19')
path= os.path.split('D:/sylar/s15/day19/')
print(path)
#輸出('D:/sylar/s15/day19', '')

#os.path.dirname / os.path.basename

ret1 = os.path.dirname('D:/sylar/s15/day19/4.os模塊.py')
ret2 = os.path.basename('D:/sylar/s15/day19/4.os模塊.py')
print(ret1) #D:/sylar/s15/day19
print(ret2) #4.os模塊.py

#os.path.exists() 判斷文件/文件夾是否存在

res = os.path.exists(r'D:\sylar\s15\day19\4.os模塊.py')
print(res)

#其餘用法

os.path.exists(path)                 若是path存在,返回True;若是path不存在,返回False
os.path.isabs(path)                  若是path是絕對路徑,返回True
os.path.isfile(path)                 若是path是一個存在的文件,返回True。不然返回False
os.path.isdir(path)                  若是path是一個存在的目錄,則返回True。不然返回False
os.path.join(path1[, path2[, ...]])  將多個路徑組合後返回,第一個絕對路徑以前的參數將被忽略
os.path.getatime(path)               返回path所指向的文件或者目錄的最後訪問時間
os.path.getmtime(path)               返回path所指向的文件或者目錄的最後修改時間
os.path.getsize(path)                返回path的大小
相關文章
相關標籤/搜索