python -- 內置模塊02

一、os
全部和操做系統相關的內容都在os模塊,通常用來操做文件系統
import os
os.makedirs('dirname1/dirname2')    # 可生成多層遞歸目錄
os.removedirs('dirname1')  # 若目錄爲空,則刪除,並遞歸到上一級目錄,如若也爲空,則刪 除,依此類推
os.mkdir('dirname')   # 生成單級目錄;至關於shell中mkdir dirname
os.rmdir('dirname')   # 刪除單級空目錄,若⽬目錄不不爲空則沒法刪除,報錯;至關於shell中 rmdir dirname
os.listdir('dirname')   # 列列出指定目錄下的全部文件和子目錄,包括隱藏⽂文件,並以列列表⽅方式 打印
os.remove()  # 刪除一個文件
os.rename("oldname","newname")  # 重命名文件/目錄
os.stat('path/filename')  # 獲取文件/目錄信息
os.system("bash command")  # 運行行shell命令,直接顯示
os.popen("bash command).read()")  # 運行行shell命令,獲取執行行結果
os.getcwd() # 獲取當前工做目錄,即當前python腳本工做的目錄路路徑
os.chdir("dirname")  # 改變當前腳本工做目錄;至關於shell下cd # os.path

  

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.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的大小 # 特殊屬性: os.sep 輸出操做系統特定的路路徑分隔符,win下爲"\\",Linux下爲"/"
os.linesep # 輸出當前平臺使用的行行終止符,win下爲"\r\n",Linux下爲"\n"
os.pathsep # 輸出用於分割文件路徑的字符串 win下爲;,Linux下爲:
os.name # 輸出字符串指示當前使用平臺。win->'nt'; Linux->'posix'

  

import os

os.makedirs("a/b/c")  # 能夠一次性建立多個目錄
os.makedirs("a/d/f")
os.mkdir('a/b')  # 上層文件夾必須存在
os.removedirs('a/b/c')  # 能夠幫咱們刪除當前這個目錄級中全部空文件夾
os.rmdir('a/d/f') # 指定文件夾刪除
os.system('dir')  # 運行shell命令,獲取執行結果(中文有可能會亂碼,解決辦法,運行下一個)
print(os.popen('dir').read()) # 執行shell腳本後者cmd命令
print(os.getcwd()) # 當前程序運行的文件夾
os.chdir('a')  # 改變工做目錄
print(os.getcwd())
os.stat() 屬性解讀:
 
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)是最新的元數據更更改的時間,在 其它系統上(如Windows)是建立時間(詳細信息參見平臺的文檔)。

  

二、sys
 
    主要針對的是咱們的python解釋器
    sys.path   模塊的查找路徑
 
import sys
# print(sys.platform)
print(sys.path)   # 找模塊的, 必需要記住,模塊的搜索路徑
sys.path.append("F:\\python_workspace_hxt\\day21 繼承")
import master
master.eat()
import sys
sys.argv          #  命令行參數List,第一個元素是程序自己路徑
sys.exit(n)       #  退出程序,正常退出時exit(0),錯誤退出sys.exit(1)
sys.version        # 獲取Python解釋程序的版本信息
sys.path          #  返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值
sys.platform      #  返回操做系統平臺名稱

  

三、序列化
 
  在咱們存儲數據或者網絡傳數數據的時候。須要對咱們的對象進行處理。把對象處理成方便存儲和傳數的數據格式。這個過程叫序列化。不一樣的序列化,結果也不相同,可是目的是同樣的,都是爲了存儲和傳輸
 
在python中存在三種序列化的方案
 
        一、pickle  能夠講咱們python種的任意數據類型轉化成bytes並寫入到文件中,一樣也能夠把文件中寫好的bytes轉化回咱們python的數據,此過程叫反序列化。
 
        二、shelve 簡單另類的一種序列化方案,有點相似redis,能夠做爲一種小型的數據庫來使用
 
        三、json 講python中常見的字典,列表裝化成字符串,是目前先後端數據交互使用頻率最高的一種數據格式。
 
四、pickle
    把一個對象進行序列化操做
    一、dumps() 把對象序列化成字節
    二、loads() 把字節反序列化成對象
import pickle
class Elephant:
    def __init__(self,name,weight,height):
        self.name = name
        self.weight = weight
        self.height = height

    def play(self):
        print(f"{self.name}大象特別喜歡吃香蕉")

e = Elephant('懶懶','1023T','176')
#
# e.play()

# 序列化
ba = pickle.dumps(e) # 把對象進行序列化
print(ba)

bs = b'\x80\x03c__main__\nElephant\nq\x00)\x81q\x01}q\x02(X\x04\x00\x00\x00nameq\x03X\x06\x00\x00\x00\xe6\x87\x92\xe6\x87\x92q\x04X\x06\x00\x00\x00weightq\x05X\x05\x00\x00\x001023Tq\x06X\x06\x00\x00\x00heightq\x07X\x03\x00\x00\x00176q\x08ub.'
# 反序列化
dx = pickle.loads(bs) # 反序列化,獲得的是大象
dx.play()
View Code
 
    三、dump() 把對象序列化寫入文件  # 寫入到文件的是bytes
    四、load() 把文件中的內容反序列化成對象
e1 = Elephant('懶懶','1023T','176')
e2 = Elephant('舟舟','789T','189')
f = open('大象',mode='wb')
# 這也是序列化
pickle.dump(e1,f) # 沒有s的這個方法是把對象打散寫入到文件,序列化的內容不是給人看的,是給機器看的
pickle.dump(e2,f)

f = open('大象',mode='rb')
while 1:
    try:
        obj = pickle.load(f)
        obj.play()
    except Exception:
        break
------2----------
e1 = Elephant('懶懶','1023T','176')
e2 = Elephant('舟舟','789T','189')
lst = [e1,e2]
pickle.dump(lst,open('大象',mode='wb'))

#
lst = pickle.load(open('大象',mode='rb'))
for dx in lst:
    dx.play()
六、json(javascript object notation)
 
        能夠認爲是python中的字典,json是咱們先後端交互的樞紐,有一點不同
 
python :True ,False,None
json:true,false,null
 
一、dumps() 把對象序列化成json
二、loads() 把json反序列化成對象
三、dump()把對象序列化寫入文件
四、load() 把文件中的內容反序列化成對象
import json
dic = {'baby':None,'hb':False,'hut':'hutong'}
s = json.dumps(dic,ensure_ascii=False)  # json 處理中文的問題
print(s)  # {"baby": null, "hb": false, "hut": "hutong"}
#
d = json.loads('{"baby": null, "hb": false, "hut": "hutong"}')
print(d['baby'])
#
f = open('baby.json',mode='w',encoding='utf-8')
json.dump({'baby':None,'hb':False,'hut':'hutong'},f,ensure_ascii=False)
#
f = open('baby.json',mode='r',encoding='utf-8')
obj = json.load(f)
print(obj)
相關文章
相關標籤/搜索