1. 程式人生 > 實用技巧 >python模組學習1

python模組學習1

一、random模組

在未來的開發中,我們可能需要用到生成隨機數,這樣就需要用到random模組
import random


print(random.random())   # 隨機生成0-1中的數
print(random.randint(1, 8))  # 隨機生成指定整數範圍中的數,如1到8的整數,包括1和8
print(random.randrange(1, 8))  # 隨機生成指定的數的範圍,如1到8,左開右閉
print(random.choice('hello world!'))   # 隨機生成序列中的元素
print(random.choice([1, 'hello
', (24, 3)]))

案例:驗證碼生成器

# 一個len長度為5位的字母數字混合的驗證碼
def code():
    co = ""
    for i in range(5):
        p = random.choice([random.randrange(10), chr(random.randrange(65, 91))])
        co += str(p)

    print(co)


code()

指定驗證碼的偶數位是數字,奇數位是字母

def code():
    co = ""
    for i in range(1, 6):
        
if i % 2 == 0: p = str(random.randrange(10)) else: p = str(chr(random.randrange(65, 91))) co += p print(co) code()

附:

chr()是內建函式

def chr(*args, **kwargs): # real signature unknown
    """ Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff. 
""" pass

二、os模組

os模組這是一個呼叫作業系統介面的一個模組

目錄操作

import os
# 目錄操作
# 建立目錄
os.mkdir('test')     # 建立當前目錄下同級目錄

os.mkdir(r'D:\zgzeng\test2')    # 在指定的目錄下建立目錄

# 判斷是否建立成功
print(os.path.isdir('test'))         # True
print(os.path.isdir(r'D:\zgzeng\test2'))       # True

os.makedirs(r'a\b\c')    # 在相對路徑下建立遞迴目錄
os.makedirs(r'D:\zgzeng\test3\test4\test5')   # 在指定的目錄下建立遞迴目錄
print(os.path.isdir(r'D:\zgzeng\test3\test4\test5'))   # True
print(os.path.exists(r'a\b\c'))     # True,判斷目錄是否存在


# 刪除目錄
os.rmdir(r'a\b\c')    # 刪除指定的空目錄  ,只能刪除一層目錄,也就是c目錄
os.rmdir(r'D:\zgzeng\test2')   # 指定刪除空目錄
print(os.path.exists(r'a\b\c'))    # False

os.removedirs(r'a\b')    # 遞迴刪除空的目錄
print(os.path.isdir(r'a\b'))   # False

# 重新命名目錄
os.rename(r'.\test', r'.\test2')    # 指定修改檔案目錄名,如果在當前目錄下存在test2這個目錄,那麼就會報錯
print(os.path.isdir('test'))       # False
print(os.path.isdir('test2'))      # True


# 獲取目錄
print(os.listdir(r'D:\zgzeng\pychon基礎\reee'))    # 指定路徑,列出該路徑目錄下包含的資料夾和檔名
# ['1', '1-異常.py', '2-異常處理格式2.py', '3-異常處理3.py', '4-捕獲異常.py', '5-捕獲具體的異常資訊.py', '6-異常處理機制.py', '7-自定義異常.py', '8-案例.py', 'datas_1.py', 'lianxi.py', '__pycache__']

# 返回當前目錄
print(os.getcwd())    # D:\zgzeng\pychon基礎  獲取當前工作路徑

# 返回上級路徑
os.chdir('..')  # 返回到指定路徑,這裡返回上一級路徑
print(os.getcwd())   # D:\zgzeng
os.chdir(r'C:\Users')
print(os.getcwd())   # C:\Users


# 刪除檔案
os.remove('test.txt')   # 刪除指定檔案
os.remove(r'D:\zgzeng\1.txt')

# 獲取指定檔案/目錄資訊
print(os.stat('1.txt'))
# os.stat_result(st_mode=33206, st_ino=2533274790396271, st_dev=2221381207, st_nlink=1, st_uid=0, st_gid=0, st_size=34, st_atime=1597026039, st_mtime=1597026039, st_ctime=1592642197)
os.system("bash command") 執行shell命令,直接顯示

os.path.abspath(path) 返回path規範化的絕對路徑

  os.path.split(path) 將path分割成目錄和檔名二元組返回

  os.path.dirname(path) 返回path的目錄。其實就是os.path.split(path)的第一個元素

  os.path.basename(path) 返回path最後的檔名。如何path以/或\結尾,那麼就會返回空值。即os.path.split(path)的第二個元素

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.open()方法開啟一個檔案,並且設定需要開啟的選項

import os

# os.open(file, flags[,mode])
# file引數是需要開啟的檔案,
# flags
os.open('qq號碼.py', os.O_RDONLY)           # 以只讀的方式開啟
os.open('qq號碼.py', os.O_WRONLY)           # 以只寫的方式開啟
os.open('qq號碼.py', os.O_RDWR)             # 以讀寫的方式開啟
os.open('qq號碼.py', os.O_NOINHERIT)        # 開啟不阻塞
os.open('qq號碼.py', os.O_APPEND)           # 以追加的方式開啟
os.open('qq號碼2.py', os.O_CREAT)           # 建立並開啟一個新檔案
os.open('file', os.O_TRUNC)            # 開啟一個檔案並截斷它的長度(必須有寫的許可權)
os.open('qq號碼.py', os.O_EXCL)             # 如果指定檔案存在,返回錯誤

os.write()方法用於寫入字串到檔案中,描述符fd中,返回實際寫入的字串長度

os.lseek()方法用於設定檔案描述符fd當前位置為pos,how方式修改

os.read()方法用於從檔案描述符fd中讀取最多n位元組,返回包含讀取位元組的字串,檔案描述符fd對應檔案已達到結尾,返回一個空字串

os.fsync() 方法強制將檔案描述為fd的檔案寫入硬碟

os.close()方法用於關閉檔案描述符fd

f = os.open('test.txt', os.O_CREAT | os.O_RDWR)  # 開啟檔案
os.write(f, b'This is test')   # 寫入內容

os.fsync(f)   # 將字串重新整理到硬碟上

os.lseek(f, 0, 0)    # 將指標置為0

text = os.read(f, 100)  # 讀取檔案
print(text)    # b'This is test'
os.close(f)