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

python中的IO流使用解讀

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

什么是IO流 

input output stream , 主要指的是計(jì)算機(jī)輸入和輸出的操作;

一般來(lái)說(shuō)是內(nèi)存與磁盤之間的輸入輸 出(俠義);

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

Python中操作IO流的方法

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

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

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

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

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

IO流的分類

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

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

>>> f = open("aa.txt","r")
>>> f
<_io.TextIOWrapper name='aa.txt' mode='r' encoding='cp936'>
>>> f.read()
'我愛(ài)學(xué)習(xí),學(xué)習(xí)使我快樂(lè)!'
>>> f.close()

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

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

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

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

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

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

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

#讀取圖片視頻或者音頻等
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中,實(shí)現(xiàn)了將圖片1.jpg復(fù)制到桌面上的操作。

字符流: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的字符流內(nèi)容寫入文檔b.txt之中。

注意的編碼格式,如果編碼格式不一致,會(huì)報(bào)錯(cuò)或者亂碼,處理數(shù)據(jù)時(shí)轉(zhuǎn)碼:encoding='UTF-8'。

注意:

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

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

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

(3)拷貝數(shù)據(jù)時(shí),為了避免因?yàn)槟繕?biāo)文件過(guò)大而導(dǎo)致電腦死機(jī),應(yīng)使用read參數(shù)來(lái)控制每次拷貝數(shù)據(jù)的多少,也可以使用循環(huán)來(lái)做。

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

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

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

from os import path
import uuid
def copy_file():
	src = input("請(qǐng)輸入源文件的路徑:")
	dest = input("請(qǐng)輸入你的保存路徑:")
	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單位進(jìn)行讀取
		data = f.read(1024*1024)
		#字符流讀到最后會(huì)返回""
		if data == b"":
			print("數(shù)據(jù)讀取完成")
			break
		else:
			f1.write(data)
	f.close()
	f1.close()
if __name__ == '__main__':
	copy_file()

對(duì)象序列化

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

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

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

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

json(可以將對(duì)象轉(zhuǎn)換為字符數(shù)據(jù))

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

注意:

json這個(gè)模塊一般用來(lái)序列化字典對(duì)象,或者轉(zhuǎn)換json數(shù)據(jù),但是其他對(duì)象也是可以的

總結(jié)

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

相關(guān)文章

  • python解析yaml文件過(guò)程詳解

    python解析yaml文件過(guò)程詳解

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

    Python自動(dòng)化中三種等待時(shí)間方式

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

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

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

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

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

    python為QT程序添加圖標(biāo)的方法詳解

    這篇文章主要介紹了python為QT程序添加圖標(biāo)的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python編寫一個(gè)趣味問(wèn)答小游戲

    Python編寫一個(gè)趣味問(wèn)答小游戲

    隨著六一兒童節(jié)的到來(lái),我們可以為孩子們編寫一個(gè)有趣的小游戲,讓他們?cè)谟螒蛑袑W(xué)習(xí)有關(guān)六一兒童節(jié)的知識(shí)。本文將介紹如何用Python編寫一個(gè)六一兒童節(jié)問(wèn)答小游戲及趣味比賽,需要的可以參考一下
    2023-06-06
  • Python人工智能之sg2im文字轉(zhuǎn)圖像

    Python人工智能之sg2im文字轉(zhuǎn)圖像

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

    對(duì)python條件表達(dá)式的四種實(shí)現(xiàn)方法小結(jié)

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

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

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

    Python format補(bǔ)0的實(shí)現(xiàn)方法

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

最新評(píng)論

乃东县| 韶关市| 漳州市| 仁怀市| 庆阳市| 双辽市| 东乌珠穆沁旗| 惠州市| 日照市| 宜春市| 广东省| 光山县| 犍为县| 泰和县| 崇礼县| 青海省| 平乡县| 福海县| 眉山市| 龙江县| 理塘县| 海盐县| 林周县| 库伦旗| 阜康市| 那曲县| 昔阳县| 梅州市| 崇文区| 东明县| 泉州市| 平江县| 怀宁县| 沂源县| 扎囊县| 桓仁| 镇康县| 昌图县| 汝州市| 加查县| 商洛市|