python模塊知識二 random -- 隨機模塊、序列化 、os模塊、sys -- 系統模塊

来源:https://www.cnblogs.com/Onlywang/archive/2019/07/29/11266729.html
-Advertisement-
Play Games

4.random 隨機模塊 1. a z:97 ~ 122 A Z :65 ~ 90 5.序列化 1.json 模塊 ​ 兩組4個方法: 1. ​ dumps() :將對象轉(序列化)成字元串 ​ loads() :將字元串轉換(反序列化)成對象 ​ 2. ​ dump() :將對象轉換(序列化)成 ...


4.random -- 隨機模塊

  1. a-z:97 ~ 122 A-Z :65 ~ 90
import random
#浮點數
print(random.random())#0~1,不可指定
print(random.uniform(1,10))#1~10#須指定

#整數
print(random.randint(1,10))[1~10]整數,閉區間
print(random.randrange(1,5,2))#(起始,終止,步長)
list1 = [1,2,3,4,5]
print(random.choice(list1)) #隨機選擇一個元素
print(random.choices(list1,k=2))#選擇兩個元素,會有重覆,k可以超範圍
print(random.sample(list1,k=2))#選擇兩個元素,k不可以超範圍。不會有重覆,除非只有兩個[1,1]

#打亂順序
list1 = [12,3,4,5,6,7,8,9]
random.shuffle(list1)
print(list1)

5.序列化

1.json 模塊

​ 兩組4個方法:

  1. ​ dumps() :將對象轉(序列化)成字元串

​ loads() :將字元串轉換(反序列化)成對象

import json
#列表
list1 = [1,22,3,3,45]
str1 = json.dumps(list1)#序列化
print(str1,type(str1))
list2 = json.loads(str1)#反序列化
print(list2,type(list2))

#字典
dict1 = {"k1":"無聊","k2":2}
str2 = json.dumps(dict1)#漢字會變成ASCII碼,
str3 = json.dumps(dict1,ensure_ascii=False)#將ASCII轉碼關閉
print(str2,type(str2))
dict2 = json.loads(str2)
print(dict2,type(dict2))
  1. ​ dump() :將對象轉換(序列化)成字元串,寫入文件

    ​ ldad():將文件中的字元串轉換(反序列化)成對象

import json
list1 = [1,22,3,3,45]
f = open('info','a')
json.dump(list1,f)#每次只能在同一行寫入
#解決:寫入多行
f.writelines(json.dumps(list1) + '\n')
f.close()

f1 = open('info','r')
l = json.load(f1)#只能讀取一行,多行或一行有多個數據會報錯
#解決:讀取多行
for i in f1:
    l = json.loads(i)
    print(l)
print(l,f1)

2.pickle 序列化

​ -- 近乎可將python所有對象進行轉換(python自帶,只有python可以用)

推薦使用json:jaon是各種語言通用的,pickle是python私有的

兩組4個方法:

​ 1.

​ dumps:轉成類位元組

​ loads:轉回原對象

import pickle
#轉列表
list1 = [1,2,3,4,6]
str1 = pickle.dumps(list1)#轉換成類似位元組
print(str1,type(str1))
list2 = pickle.loads(str1)
print(list2,type(list2))

#轉字典
dict1 = {'k1':'v1'}
str1 = pickle.dumps(dict1)
print(str1)
print(pickle.loads(str1))

#轉函數名
def func():
    print(111)
fun = pickle.dumps(func)
print(fun)
pickle.loads(fun)()

​ dump::轉成類位元組寫入文件

​ load:讀取文件並還原成原對象

import pickle
dic = {'user':'你去'}
pickle.dump(dic,open("info",'wb'))
print(pickle.load(open("info",'rb')))

#寫入多行,讀取多行
f = open("info",'wb')
s = "\n".encode("utf-8")
f.write(pickle.dumps(dic) + s)
f.close()
f1 = open("info",'rb')
for i in f1:
    print(pickle.loads(i))

6.os模塊 -- 與操作系統交互的介面

(程式員通過python向操作系統發送指令)

共四組:

  1. 工作目錄
import os
print(os.getcwd())#獲取當前工作目錄 ***
os.chdir("D:\\")#路徑切換***
print(os.curdir)#當前 .
print(os.pardir)#父級 ..
  1. 文件夾:***
import os
os.mkdir('tt')#創建一個文件夾,不能是跨級創建
os.rmdir('tt')#刪除一個空的文件夾
os.makedirs("tt/ss/dd")#遞歸創建文件夾
os.removedirs("tt/ss/dd")#遞歸刪除文件夾

print(os.listdir(r"E:\python\oldboy\py\190726"))#返回目錄下文件
  1. 文件
import os
os.rename()#修改文件名***
os.remove("info")#刪除文件,不能撤銷***
print(os.path.getatime(r"E:\python\oldboy\py\190726\01.py"))#最後修改的時間
print(os.path.getctime(r"E:\python\oldboy\py\190726\01.py"))#最後的訪問時間
print(os.path.getmtime(r"E:\python\oldboy\py\190726\01.py"))#最後的訪問時間
print(os.path.getsize(r"E:\python\oldboy\py\190726\01.py"))#獲取當前文件的大小,不用來判斷文件夾。***
#要寫一個函數實現,先判斷是否為文件:

#os.listdir() 方法用於返回指定的文件夾包含的文件或文件夾的名字的列表
import os
for i in os.listdir(“hahaha”):
    if os.path.isfile(i):
        print(os.path.getsize(“hahaha”+os.sep+i))
  1. 路徑
import os
print(os.path.abspath(r"01.py"))#通過相對路徑獲取絕度路徑 ***
print(os.path.split(os.path.abspath(r"01.py")))#將絕對路徑按照最後一個'\'切割(路徑,文件名)***

print(os.path.dirname(r"E:\python\oldboy\py\190726\01.py"))#通過絕對路徑獲取路徑 ***
print(os.path.basename(r"E:\python\oldboy\py\190726\01.py"))#通過路徑獲獲取最後輸入的最後一級文件名 **

print(os.path.exists(r"E:\python\oldboy\py\190726\01.py"))#判斷這個路徑是否存在 ***
print(os.path.isdir(r"E:\python\oldboy\py\190726\01.py"))#判斷是不是存在的目錄 ***
print(os.path.isfile(r"01.py"))#判斷是不是存在的文件 ***
print(os.path.isabs(r"E:\python\oldboy\py\190726\01.py"))#判斷是不是絕對路徑

print(os.path.join("D:\\","tt","dd"))#路徑拼接 ***

7.sys -- 系統模塊,與python解釋器交互的介面

import sys
sys.argv#命令行傳參
print(sys.argv)

sys.exit()#退出程式,可以修改參數,0為正常退出,1為出錯

print(sys.version)#獲取當前解釋器版本

print(sys.path())#添加自定義模塊查找路徑

print(sys.platform)#區分操作系統,進行相關邏輯操作


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • LinkedList是用鏈表結構存儲數據的,比較適合數據的動態插入和刪除,隨機訪問和遍歷速度比較慢,還提供了List介面i中沒有定義的方法,專門用於操作表頭和表尾的元素,所以可以當作堆棧、隊列和雙向隊列來使用。LInkedList持有頭節點和尾節點的引用,有兩個構造器,一個是無參構造器,另一個是傳入 ...
  • 題目: " 10056. 「一本通 2.3 練習 5」The XOR longest Path" 解析: 做完 " 10051" 後就不是很難了 繼續利用異或的性質有$dis(u,v) = dis(1,u)\oplus dis(1,v)$ 把邊權放到點上,然後字典樹求最大異或值 代碼 cpp inc ...
  • 對於python多進程的包multiprocessing作了一個詳細的介紹。 ...
  • 通俗的講,可修改可以理解為可以在數據所在記憶體地址直接修改,而不可修改則意味著一旦修改便是創建新的數據對象,而不是在原來的對象記憶體地址修改1,Mutuable object [sourcecode language='python' ] List, dict, setL = [1,2,3]L.appe... ...
  • T1 遠征 題目 【題目描述】 寒楓將軍將要帶領他的部隊去聖雪山消滅那裡的冰龍。部隊分成了若幹個小隊,屬於同一個小隊的人兵種相同。 寒楓將軍有著傑出的指揮能力,在戰鬥的時候,寒楓將軍能夠讓所有相同兵種的人互相配合,使t個相同兵種的人發揮出t2的戰鬥力; 寒楓將軍還能讓不同兵種的人互相配合,使整個部隊 ...
  • 不管是AWT還是Swing,都把選擇框分成兩類:覆選框和單選按鈕,這兩類控制項無論是外觀上還是功能上均有顯著差異。例如,在外觀方面,覆選框是在方框內打勾,而單選按鈕是在圓圈內畫圓點;在功能方面,覆選框允許多選,而同組的單選按鈕只能選擇其中一個。然而AWT的覆選框和單選按鈕統統採用Checkbox類型, ...
  • 01Spring基於xml的IOC配置 1、創建一個普通的maven工程 1.1 選擇maven,不用骨架,點擊下一步。 1.2 填寫GroupId、ArtifactId、Version。填完點擊下一步 1.3 確認項目路徑,確認完成點擊finish 2、模擬三層創建包和類 2.1 創建servic ...
  • 9.16 非阻塞IO模型 cpu占用率過高 服務端: 客戶端; 9.17 I/O多路復用 服務端: from socket import * import select s = socket() s.bind(('127.0.0.1',8080)) s.listen(5) s.setblocking ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...