最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中的IO流使用解讀

 更新時間:2023年08月16日 08:58:31   作者:Awen0201  
這篇文章主要介紹了python中的IO流使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

什么是IO流 

input output stream , 主要指的是計算機輸入和輸出的操作;

一般來說是內存與磁盤之間的輸入輸 出(俠義);

IO流操作是一種持久化操作,是將數(shù)據(jù)持久化在磁盤上。

Python中操作IO流的方法

通過open全局函數(shù)( 主要作用是打開本地的文件)

open函數(shù)解析:第一個參數(shù):file  (打開的文件的文件名或者路徑)

第二個參數(shù): mode  打開的模式( 默認的是字符輸入流(r) )                                                   

  • r:read表示輸入流
  • w:write表示輸出流
  • t:表示字符流
  • b:表示字節(jié)流
  • a:表示追加輸出                                

注意:一定要關流:f.close()               

IO流的分類

1、根據(jù)數(shù)據(jù)流動方向分類

(1)輸入流:相對于內存而言,例如從磁盤、投影儀、網(wǎng)絡中讀取數(shù)據(jù)。

>>> f = open("aa.txt","r")
>>> f
<_io.TextIOWrapper name='aa.txt' mode='r' encoding='cp936'>
>>> f.read()
'我愛學習,學習使我快樂!'
>>> f.close()

上面的代碼:mode = "r" 表示輸入流,讀取當前路徑下名為aa.txt的文檔的內容

(2)輸出流:相對于內存而言,例如向磁盤、投影儀、網(wǎng)絡等顯示設備中寫入數(shù)據(jù)。

>>> f = open("aa.txt",mode="w")
>>> f
<_io.TextIOWrapper name='aa.txt' mode='w' encoding='cp936'>
>>> f.write("阿文今天很開心!OVO")
11
>>> f.close()

上面的代碼:mode = "w" 表示輸出流,將內容保存在aa.txt的文檔之中,并且會覆蓋之前的內容;f.write("")之后返回的是寫入字符的個數(shù)。

注意每次結束操作之后都要關流:f.close(),這樣才能寫入需要寫入的東西;也有不關流寫入內容的方法:f.flush()。

2、根據(jù)數(shù)據(jù)類型分類

字節(jié)流:mode = “b” 表示使用字節(jié)來操作IO流(如視圖、音頻、圖片可執(zhí)行文件等);字節(jié)流操作較大數(shù)據(jù)時,不建議一次性讀取。

#讀取圖片視頻或者音頻等
def copy_file(src,dest):
	f = open(src,"rb")
	f1 = open(dest,"wb")
	f1.write(f.read())
	f.close()
	f1.close()
if __name__ == '__main__':
	copy_file("D:\\PYcharm\\哈哈\\1.jpg","C:\\Users\\QWQ\\Desktop\\1.jpg")

上面的代碼:f是輸入流,f1是輸出流,將f讀取的字節(jié)流數(shù)據(jù)寫入f1中,實現(xiàn)了將圖片1.jpg復制到桌面上的操作。

字符流:mode = “t” 表示使用字符操作IO流

#讀取文檔數(shù)據(jù)
def io_test(url1,url2):
	f1 = open(url1,"rt",encoding='UTF-8')
	f2 = open(url2,"wt",encoding='UTF-8')
	msg = f1.read()
	f2.write(msg)
	f1.close()
	f2.close()
io_test("C:\\Users\\QWQ\\Desktop\\第一天\\a.txt","C:\\Users\\QWQ\\Desktop\\第一天\\b.txt")

上面的代碼:將文檔a.txt的字符流內容寫入文檔b.txt之中。

注意的編碼格式,如果編碼格式不一致,會報錯或者亂碼,處理數(shù)據(jù)時轉碼:encoding='UTF-8'。

注意:

(1)本質 Mode = "r" "w" ------“rt" "wt" --------- t text 字符流; b ------- binary mode, mode = "b" ------- 操作字節(jié)數(shù)據(jù)(圖片、音頻、視頻等)。

(2)字節(jié)可以操作任何數(shù)據(jù),字符只能操作字符數(shù)據(jù)。

(3)IO流一定要及時關閉,避免資源的占用以及避免出現(xiàn)異常。

(3)拷貝數(shù)據(jù)時,為了避免因為目標文件過大而導致電腦死機,應使用read參數(shù)來控制每次拷貝數(shù)據(jù)的多少,也可以使用循環(huán)來做。

(5)字節(jié)流操作大數(shù)據(jù)的時候,不建議一次性讀??;字符流,我們一般不用考慮內存不夠用問題(如500W字約10M左右)。

(6) 出現(xiàn)名字相同的文件進行備份的時候,會覆蓋掉原本的內容,可使用參數(shù) a:表示追加輸出  ;這樣需要保存的數(shù)據(jù)會保存在原來數(shù)據(jù)的后面。

編寫一個程序:將某個文件備份到需要保存的路徑

from os import path
import uuid
def copy_file():
	src = input("請輸入源文件的路徑:")
	dest = input("請輸入你的保存路徑:")
	f = open(src,"rb")
	filename = src[src.rfind("\\")+1:]
	random_uuid = uuid.uuid4().hex
	filename = random_uuid + filename
	print(filename)
	f1 = open(path.join(dest,filename),"wb")
	while True:
		#以M單位進行讀取
		data = f.read(1024*1024)
		#字符流讀到最后會返回""
		if data == b"":
			print("數(shù)據(jù)讀取完成")
			break
		else:
			f1.write(data)
	f.close()
	f1.close()
if __name__ == '__main__':
	copy_file()

對象序列化

列表、字典、集合和元組都是抽象的概念,需要把對象持久化操作,所以需要序列化;

是把對象這種抽象的概念持久化到磁盤上,換句話說就是將對象轉為字節(jié)和字符。

pickle(可以將對象轉換為字節(jié)數(shù)據(jù))

  • dumps ------ 將對象序列化為字節(jié)數(shù)據(jù)
  • loads ------ 將字節(jié)數(shù)據(jù)反序列化為對象
  • dump ------ 將對象序列化為字節(jié)數(shù)據(jù)并且保存到 file 中
  • load -------- 將 file 字節(jié)數(shù)據(jù)反序列化為對象

json(可以將對象轉換為字符數(shù)據(jù))

  • dump ------ 將對象序列化成為字符數(shù)據(jù),并且保存到file中
  • dumps ------ 將對象序列化成為字符數(shù)據(jù)
  • load ------ 將一個file對象反序列化為對象
  • loads------  將一個字符串據(jù)反序列化為對象

注意:

json這個模塊一般用來序列化字典對象,或者轉換json數(shù)據(jù),但是其他對象也是可以的

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • python解析yaml文件過程詳解

    python解析yaml文件過程詳解

    這篇文章主要介紹了python解析yaml文件過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • Python自動化中三種等待時間方式

    Python自動化中三種等待時間方式

    這篇文章主要介紹了Python自動化中三種等待時間方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • python讀取txt文件并逐行輸出字符串

    python讀取txt文件并逐行輸出字符串

    Python提供了簡單且方便的方法來讀取txt文件,使用open()函數(shù)和readlines()方法逐行輸出文件中的字符串內容,我們可以輕松地讀取文件內容,并通過循環(huán)遍歷的方式逐行處理,讀取txt文件的方法在各種應用場景中非常常見,可以用于數(shù)據(jù)分析、文本處理、日志分析等
    2023-10-10
  • Python 共享變量加鎖、釋放詳解

    Python 共享變量加鎖、釋放詳解

    這篇文章主要介紹了Python 共享變量加鎖、釋放詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • python為QT程序添加圖標的方法詳解

    python為QT程序添加圖標的方法詳解

    這篇文章主要介紹了python為QT程序添加圖標的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Python編寫一個趣味問答小游戲

    Python編寫一個趣味問答小游戲

    隨著六一兒童節(jié)的到來,我們可以為孩子們編寫一個有趣的小游戲,讓他們在游戲中學習有關六一兒童節(jié)的知識。本文將介紹如何用Python編寫一個六一兒童節(jié)問答小游戲及趣味比賽,需要的可以參考一下
    2023-06-06
  • Python人工智能之sg2im文字轉圖像

    Python人工智能之sg2im文字轉圖像

    這篇文章主要介紹了Python人工智能中使用sg2im把文字轉成圖像的方法,sg2im是一個由Google開發(fā)的開源項目,它專注于將場景圖形轉換為圖像,借助sg2im就可以把文字轉換成圖像,需要的朋友可以參考下
    2021-11-11
  • 對python條件表達式的四種實現(xiàn)方法小結

    對python條件表達式的四種實現(xiàn)方法小結

    今天小編就為大家分享一篇對python條件表達式的四種實現(xiàn)方法小結,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 利用Python小工具實現(xiàn)3秒鐘將視頻轉換為音頻

    利用Python小工具實現(xiàn)3秒鐘將視頻轉換為音頻

    這篇文章主要介紹了利用Python小工具實現(xiàn) 3秒鐘將視頻轉換為音頻效果,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • Python format補0的實現(xiàn)方法

    Python format補0的實現(xiàn)方法

    對于一些數(shù)字的處理,我們可能需要讓它們滿足一定格式的要求,本文主要介紹了Python format補0的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07

最新評論

介休市| 怀宁县| 那曲县| 津南区| 祁门县| 中牟县| 广东省| 资源县| 偃师市| 肇源县| 阳城县| 布尔津县| 长沙市| 邵阳市| 日照市| 阜宁县| 正定县| 塔城市| 丹棱县| 固始县| 阿鲁科尔沁旗| 什邡市| 蒙阴县| 台东县| 营山县| 鹤岗市| 南阳市| 尼勒克县| 大邑县| 阿城市| 西昌市| 永年县| 深圳市| 都安| 漳浦县| 辛集市| 泰宁县| 朔州市| 武义县| 珠海市| 玉溪市|