国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python read()函數(shù):按字節(jié)(字符)讀取文件

這篇具有很好參考價(jià)值的文章主要介紹了Python read()函數(shù):按字節(jié)(字符)讀取文件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Python? 提供了如下 3 種函數(shù),它們都可以幫我們實(shí)現(xiàn)讀取文件中數(shù)據(jù)的操作:

  1. read() 函數(shù):逐個(gè)字節(jié)或者字符讀取文件中的內(nèi)容;
  2. readline() 函數(shù):逐行讀取文件中的內(nèi)容;
  3. readlines() 函數(shù):一次性讀取文件中多行內(nèi)容。

這里先講解 read() 函數(shù)的用法,readline() 和 readlines() 函數(shù)會(huì)放到后面詳細(xì)介紹。

Python read()函數(shù)

對(duì)于借助 open() 函數(shù),并以可讀模式(包括 r、r+、rb、rb+)打開(kāi)的文件,可以調(diào)用 read() 函數(shù)逐個(gè)字節(jié)(或者逐個(gè)字符)讀取文件中的內(nèi)容。

如果文件是以文本模式(非二進(jìn)制模式)打開(kāi)的,則 read() 函數(shù)會(huì)逐個(gè)字符進(jìn)行讀??;反之,如果文件以二進(jìn)制模式打開(kāi),則 read() 函數(shù)會(huì)逐個(gè)字節(jié)進(jìn)行讀取。

read() 函數(shù)的基本語(yǔ)法格式如下:

file.read([size])

其中,file 表示已打開(kāi)的文件對(duì)象;size 作為一個(gè)可選參數(shù),用于指定一次最多可讀取的字符(字節(jié))個(gè)數(shù),如果省略,則默認(rèn)一次性讀取所有內(nèi)容。

舉個(gè)例子,首先創(chuàng)建一個(gè)名為 my_file.txt 的文本文件,其內(nèi)容為:

Python教程
http://www.CSDN.net/

然后在和 my_file.txt 同目錄下,創(chuàng)建一個(gè) file.py 文件,并編寫(xiě)如下語(yǔ)句:

#以 utf-8 的編碼格式打開(kāi)指定文件
f = open("my_file.txt",encoding = "utf-8")
#輸出讀取到的數(shù)據(jù)
print(f.read())
#關(guān)閉文件
f.close()

程序執(zhí)行結(jié)果為:

Python教程
http://www.CSDN.net/

注意,當(dāng)操作文件結(jié)束后,必須調(diào)用 close() 函數(shù)手動(dòng)將打開(kāi)的文件進(jìn)行關(guān)閉,這樣可以避免程序發(fā)生不必要的錯(cuò)誤。

當(dāng)然,我們也可以通過(guò)使用 size 參數(shù),指定 read() 每次可讀取的最大字符(或者字節(jié))數(shù),例如:

#以 utf-8 的編碼格式打開(kāi)指定文件
f = open("my_file.txt",encoding = "utf-8")
#輸出讀取到的數(shù)據(jù)
print(f.read(6))
#關(guān)閉文件
f.close()

程序執(zhí)行結(jié)果為:

Python

顯然,該程序中的 read() 函數(shù)只讀取了 my_file 文件開(kāi)頭的 6 個(gè)字符。

再次強(qiáng)調(diào),size 表示的是一次最多可讀取的字符(或字節(jié))數(shù),因此,即便設(shè)置的 size 大于文件中存儲(chǔ)的字符(字節(jié))數(shù),read() 函數(shù)也不會(huì)報(bào)錯(cuò),它只會(huì)讀取文件中所有的數(shù)據(jù)。

除此之外,對(duì)于以二進(jìn)制格式打開(kāi)的文件,read() 函數(shù)會(huì)逐個(gè)字節(jié)讀取文件中的內(nèi)容。例如:

#以二進(jìn)制形式打開(kāi)指定文件
f = open("my_file.txt",'rb+')
#輸出讀取到的數(shù)據(jù)
print(f.read())
#關(guān)閉文件
f.close()

程序執(zhí)行結(jié)果為:

b'Python\xe6\x95\x99\xe7\xa8\x8b\r\nhttp://www.CSDN.net/'

可以看到,輸出的數(shù)據(jù)為 bytes 字節(jié)串。我們可以調(diào)用 decode() 方法,將其轉(zhuǎn)換成我們認(rèn)識(shí)的字符串。

另外需要注意的一點(diǎn)是,想使用 read() 函數(shù)成功讀取文件內(nèi)容,除了嚴(yán)格遵守 read() 的語(yǔ)法外,其還要求 open() 函數(shù)必須以可讀默認(rèn)(包括 r、r+、rb、rb+)打開(kāi)文件。舉個(gè)例子,將上面程序中 open()的打開(kāi)模式改為 w,程序會(huì)拋出io.UnsupportedOperation異常,提示文件沒(méi)有讀取權(quán)限:

Traceback (most recent call last):
  File "C:\Users\mengma\Desktop\file.py", line 3, in <module>
    print(f.read())
io.UnsupportedOperation: not readable

read()函數(shù)拋出UnicodeDecodeError異常的解決方法

在使用 read() 函數(shù)時(shí),如果 Python 解釋器提示UnicodeDecodeError異常,其原因在于,目標(biāo)文件使用的編碼格式和 open() 函數(shù)打開(kāi)該文件時(shí)使用的編碼格式不匹配。

舉個(gè)例子,如果目標(biāo)文件的編碼格式為 GBK 編碼,而我們?cè)谑褂?open() 函數(shù)并以文本模式打開(kāi)該文件時(shí),手動(dòng)指定 encoding 參數(shù)為 UTF-8。這種情況下,由于編碼格式不匹配,當(dāng)我們使用 read() 函數(shù)讀取目標(biāo)文件中的數(shù)據(jù)時(shí),Python 解釋器就會(huì)提示UnicodeDecodeError異常。

要解決這個(gè)問(wèn)題,要么將 open() 函數(shù)中的 encoding 參數(shù)值修改為和目標(biāo)文件相同的編碼格式,要么重新生成目標(biāo)文件(即將該文件的編碼格式改為和 open() 函數(shù)中的 encoding 參數(shù)相同)。

除此之外,還有一種方法:先使用二進(jìn)制模式讀取文件,然后調(diào)用?bytes 的 decode() 方法,使用目標(biāo)文件的編碼格式,將讀取到的字節(jié)串轉(zhuǎn)換成認(rèn)識(shí)的字符串。

舉個(gè)例子:

#以二進(jìn)制形式打開(kāi)指定文件,該文件編碼格式為 utf-8
f = open("my_file.txt",'rb+')
byt = f.read()
print(byt)
print("\n轉(zhuǎn)換后:")
print(byt.decode('utf-8'))
#關(guān)閉文件
f.close()

程序執(zhí)行結(jié)果為:

b'Python\xe6\x95\x99\xe7\xa8\x8b\r\nhttp://www.CSDN.net/'

轉(zhuǎn)換后:
Python教程
http://www.CSDN.net/

Python教程,8天python從入門(mén)到精通,學(xué)python看這套就夠了文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-835716.html

到了這里,關(guān)于Python read()函數(shù):按字節(jié)(字符)讀取文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python---文件、基本操作:打開(kāi)open,寫(xiě)入write,關(guān)閉close,讀取read/readlines,移動(dòng)光標(biāo)seek,mode模式

    Python---文件、基本操作:打開(kāi)open,寫(xiě)入write,關(guān)閉close,讀取read/readlines,移動(dòng)光標(biāo)seek,mode模式

    文件: 內(nèi)存中存放的數(shù)據(jù)在計(jì)算機(jī)關(guān)機(jī)后就會(huì)消失。 要長(zhǎng)久保存數(shù)據(jù) ,就要使用硬盤(pán)、光盤(pán)、U 盤(pán)等設(shè)備。 為了便于數(shù)據(jù)的管理和檢索,引入了 “文件 ”的概念。 像移動(dòng)硬盤(pán),內(nèi)存卡,網(wǎng)盤(pán)等等。 一篇文章、一段視頻、一個(gè)可執(zhí)行程序,都可以被保存為一個(gè)文件,并賦予

    2024年02月03日
    瀏覽(23)
  • 【Java基礎(chǔ)教程】(四十四)IO篇 · 上:File類(lèi)、字節(jié)流與字符流,分析字節(jié)輸出流、字節(jié)輸入流、字符輸出流和字符輸入流的區(qū)別~

    【Java基礎(chǔ)教程】(四十四)IO篇 · 上:File類(lèi)、字節(jié)流與字符流,分析字節(jié)輸出流、字節(jié)輸入流、字符輸出流和字符輸入流的區(qū)別~

    掌握 java.io包中類(lèi)的繼承關(guān)系 ; 掌握 File類(lèi)的使用,并且可以通過(guò)File類(lèi)進(jìn)行文件的創(chuàng)建、刪除以及文件夾的列表等操作; 掌握字節(jié)流或字符流操作文件內(nèi)容,字節(jié)流與字符流的區(qū)別; 在 java.io 包中,如果要進(jìn)行文件自身的操作 (例如:創(chuàng)建、刪除等), 只能依靠 java.io.File 類(lèi)完

    2024年02月15日
    瀏覽(29)
  • Python中獲取字符串長(zhǎng)度和字節(jié)數(shù)

    Python中獲取字符串長(zhǎng)度和字節(jié)數(shù)

    使用en1、使用len()函數(shù) 格式:len(str)? ?str用于指定的字符串 2、使用一個(gè)for循環(huán) 運(yùn)行結(jié)果 其中\(zhòng)\\"d.bjh\\\"就是輸入的字符串,用過(guò)遍歷for循環(huán),設(shè)置一個(gè)變量n計(jì)算遍歷的次數(shù),得到字符串的長(zhǎng)度。 3、獲取字符串的字節(jié)數(shù) 在 Python 中,不同的字符所占的字節(jié)數(shù)不同,數(shù)字、英文字母

    2024年02月12日
    瀏覽(94)
  • CSV導(dǎo)出(通過(guò)讀取數(shù)據(jù)字節(jié)流直接上傳文件到服務(wù)器)

    CSV導(dǎo)出(通過(guò)讀取數(shù)據(jù)字節(jié)流直接上傳文件到服務(wù)器)

    文件之前讀取大多數(shù)都是用前端點(diǎn)擊相應(yīng)傳入后端,通過(guò)HttpServletResponse response得輸入輸出流進(jìn)行導(dǎo)入導(dǎo)入導(dǎo)出數(shù)據(jù)。 近期碰到得需求是定時(shí)查詢數(shù)據(jù)庫(kù)數(shù)據(jù)并通過(guò)csv文件上傳至系統(tǒng)。所以不能使用HttpServletResponse,因?yàn)閷?duì)應(yīng)文件流比較熟悉所以最開(kāi)始使用文件流進(jìn)行讀寫(xiě)數(shù)據(jù)

    2024年02月12日
    瀏覽(22)
  • 【計(jì)算機(jī)網(wǎng)絡(luò)】TCP中payload的解析,在python中的體現(xiàn)?字節(jié)、字符?為啥字節(jié)用十六進(jìn)制表示?

    【計(jì)算機(jī)網(wǎng)絡(luò)】TCP中payload的解析,在python中的體現(xiàn)?字節(jié)、字符?為啥字節(jié)用十六進(jìn)制表示?

    問(wèn)題來(lái)源 最近要根據(jù)一份國(guó)家標(biāo)準(zhǔn)協(xié)議進(jìn)行解碼,但是對(duì)于進(jìn)制,字節(jié),字符,編碼,轉(zhuǎn)碼有比較多的問(wèn)題。其中我想實(shí)現(xiàn)的主要需求如下: 有客戶端與服務(wù)端,進(jìn)行tcp通信,客戶端要發(fā)送一個(gè)請(qǐng)求,tcp中payload請(qǐng)求大概是這樣,有很多個(gè)十六進(jìn)制表示的字節(jié)組成 根據(jù)協(xié)議的

    2024年02月11日
    瀏覽(27)
  • Java文件字符流和字節(jié)流中的實(shí)戰(zhàn)

    Java文件字符流和字節(jié)流中的實(shí)戰(zhàn)

    文件的分類(lèi)上一篇文章(文件對(duì)象處理)已經(jīng)和大家講解過(guò)了。本章主要文件主要針對(duì)于對(duì)文件內(nèi)容的操作展開(kāi)講解,文件分為: 文本文件 和 二進(jìn)制文件 ,不同的文件,操作方法也不盡相同。 針對(duì)文本文件,Java提供了一組類(lèi)——”字符流“,代表類(lèi)(Reader,Writer)。同樣

    2023年04月22日
    瀏覽(16)
  • python配置opencv環(huán)境后,讀取圖片,報(bào)錯(cuò):can‘t open/read file: check file path/integrity

    python配置opencv環(huán)境后,讀取圖片,報(bào)錯(cuò):can‘t open/read file: check file path/integrity

    ? 報(bào)錯(cuò)原因:路徑中出現(xiàn)中文字符 ?? 解決辦法: ?? 修改路徑,有時(shí)候中文和英文大寫(xiě)都不可以 ?這里另外還提一下另外一個(gè)問(wèn)題,就是使用opencv的時(shí)候,有時(shí)候出現(xiàn),cv2.error:OpenCV(4.2.0) C:projectsopencv-pythonopencv...報(bào)錯(cuò) ??這種類(lèi)別的報(bào)錯(cuò)原因是因?yàn)镺penCV 3.0后OpenCv只包

    2024年02月11日
    瀏覽(28)
  • 【Python】進(jìn)階學(xué)習(xí):pandas--read_excel()函數(shù)的基本使用

    【Python】進(jìn)階學(xué)習(xí):pandas--read_excel()函數(shù)的基本使用

    【Python】進(jìn)階學(xué)習(xí):pandas–read_excel()函數(shù)的基本使用 ?? 個(gè)人主頁(yè):高斯小哥 ?? 高質(zhì)量專(zhuān)欄:Matplotlib之旅:零基礎(chǔ)精通數(shù)據(jù)可視化、Python基礎(chǔ)【高質(zhì)量合集】、PyTorch零基礎(chǔ)入門(mén)教程?? 希望得到您的訂閱和支持~ ?? 創(chuàng)作高質(zhì)量博文(平均質(zhì)量分92+),分享更多關(guān)于深度學(xué)習(xí)、

    2024年03月09日
    瀏覽(42)
  • Python pandas中read_csv函數(shù)的io參數(shù)

    Python pandas中read_csv函數(shù)的io參數(shù)

    前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站零基礎(chǔ)入門(mén)的AI學(xué)習(xí)網(wǎng)站~。 在數(shù)據(jù)分析和處理中,經(jīng)常需要讀取外部數(shù)據(jù)源,例如CSV文件。Python的pandas庫(kù)提供了一個(gè)強(qiáng)大的 read_csv() 函數(shù),用于讀取CSV文件并將其轉(zhuǎn)換

    2024年03月10日
    瀏覽(20)
  • shell腳本while循環(huán)、read讀取控制臺(tái)輸入與函數(shù)

    shell腳本while循環(huán)、read讀取控制臺(tái)輸入與函數(shù)

    聲明: 以下為個(gè)人筆記,內(nèi)容不完全正確,請(qǐng)謹(jǐn)慎參考。 while循環(huán)結(jié)構(gòu) while [條件判斷] do 程序 done 腳本示例: 點(diǎn)擊查看代碼 簡(jiǎn)易寫(xiě)法: 點(diǎn)擊查看代碼 read 讀取控制臺(tái)輸入 基本語(yǔ)法: read(選項(xiàng))(參數(shù)) 1、選項(xiàng) -p: 指定讀取值時(shí)的字符; -t: 指定讀取值等待時(shí)間(秒-s)如

    2024年04月22日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包