關於python中readlines函數的參數hint的相關知識總結
readlines的幫助信息
>>> fr=open('readme.txt') >>> help(fr.readlines) Help on built-in function readlines: readlines(hint=-1, /) method of _io.TextIOWrapper instance Return a list of lines from the stream. hint can be specified to control the number of lines read: no more lines will be read if the total size (in bytes/characters) of all lines so far exceeds hint.
Google翻譯
_io.TextIOWrapper 實例的 readlines(hint=-1, /) 方法
從流中返回行列表。
可以指定 hint 來控制讀取的行數:如果到目前為止所有行的總大小(以字節/字符為單位)超過hint,則不會讀取更多行。
readme.txt中的內容
>>> f=open('readme.txt') >>> f.readlines() ['1\n', '22\n', '\n', '333']
為瞭進一步搞清楚hint,我寫瞭一個函數來演示
readlines函數代碼
def readlinesFile(filename,nbyte): ''' 探索f.readlines(i)中i的作用,典型的調用形式: readlinesFile('readme.txt',12) ''' for i in range(nbyte): f=open(filename) ss=f.readlines(i) if i==0:#如果hint=0,先把每一個元素輸出 textline=len(ss)#文件的總行數 ntotalbyte=0#文件的總字數 nwritebyte=0#已經寫瞭的字節數 for j in range(textline): #nwritebyte=ntotalbyte#已經寫瞭的字節數 ntotalbyte=ntotalbyte+len(ss[j]) rowbyte=0#已經寫瞭的新行的字節數,用來記一行已經輸出的字節個數 while nwritebyte<ntotalbyte:#當已寫字節<總字節數 print(f'{nwritebyte+1}:',repr(ss[j][rowbyte])) #repr是為瞭輸出換行符 nwritebyte=nwritebyte+1 rowbyte=rowbyte+1 print(f'行數={textline},字數={ntotalbyte}') print(f'f.readlines{i}={ss}') f.close()
輸出
>>> readlinesFile(‘readme.txt’,12)
1: ‘1’
2: ‘\n’
3: ‘2’
4: ‘2’
5: ‘\n’
6: ‘\n’
7: ‘3’
8: ‘3’
9: ‘3’
行數=4,字數=9
f.readlines0=[‘1\n’, ’22\n’, ‘\n’, ‘333’]
f.readlines1=[‘1\n’]
f.readlines2=[‘1\n’, ’22\n’]
f.readlines3=[‘1\n’, ’22\n’]
f.readlines4=[‘1\n’, ’22\n’]
f.readlines5=[‘1\n’, ’22\n’, ‘\n’]
f.readlines6=[‘1\n’, ’22\n’, ‘\n’, ‘333’]
f.readlines7=[‘1\n’, ’22\n’, ‘\n’, ‘333’]
f.readlines8=[‘1\n’, ’22\n’, ‘\n’, ‘333’]
f.readlines9=[‘1\n’, ’22\n’, ‘\n’, ‘333’]
f.readlines10=[‘1\n’, ’22\n’, ‘\n’, ‘333’]
f.readlines11=[‘1\n’, ’22\n’, ‘\n’, ‘333’]
總結:
1.hint 是要輸出顯示的字節數
2.hint 默認等於-1,就是以列表的形式讀出所有內容
3.hint = 0時,效果等同於-1
4.hint 所指的字節數正好是換行符的話,則實際輸出是 hint+1
更花哨的readlinesFile
def readlinesFile(filename,nbyte): ''' 探索f.readlines(i)中i是指什麼,典型的調用形式: readlinesFile('readme.txt',12) ''' specialByte=[]#存儲特殊的字節數用 for i in range(nbyte): with open(filename) as f:#使用with語句就可以不使用f.close()瞭 ss=f.readlines(i) if(i==0):#如果hint=0,先把每一個元素輸出 print(ss) textline=len(ss)#文件的總行數 ntotalbyte=0#文件的總字數 nwritebyte=0#已經寫瞭的字節數 for j in range(textline): #nwritebyte=ntotalbyte#已經寫瞭的字節數 ntotalbyte=ntotalbyte+len(ss[j]) rowbyte=0#已經寫瞭的新行的字節數,用來記一行已經輸出的字節個數 while nwritebyte<ntotalbyte:#當已寫字節<總字節數 if(nwritebyte is ntotalbyte-1): specialByte.append(nwritebyte) print(f'\033[0;31;47m{nwritebyte+1:2d}:',repr(ss[j][rowbyte]),'\033[0m')#\033[0m是字體和背景顏色設置,註意可能需要其他庫的支持 else: print(f'{nwritebyte+1:2d}:',repr(ss[j][rowbyte])) nwritebyte=nwritebyte+1 rowbyte=rowbyte+1 print(f'\033[0;31;40m行數={textline:2d},字數={ntotalbyte:2d}\033[0m') if i in specialByte: print(f'\033[0;31;47mf.readlines{i:<2d}={ss}\033[0m') #<是左對齊 else: print(f'f.readlines{i:<2d}={ss}') #<是左對齊
效果
參考文章:https://www.jb51.net/article/206578.htm
到此這篇關於關於python中readlines函數的參數hint的相關知識總結的文章就介紹到這瞭,更多相關python readlines函數內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python 3.x對.CSV數據按任意行、列讀取的過程
- 如何使用python批量修改文本文件編碼格式
- python基礎之文件處理知識總結
- Python如何實現逐行讀取文本文件
- Python中read,readline和readlines的區別案例詳解