while和for循环读取大文件三种读取文件方式
生活随笔
收集整理的這篇文章主要介紹了
while和for循环读取大文件三种读取文件方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- While和for循環
- 讀寫文件
- 三種讀操作比較
- read()讀文件
- readline()讀文件
- readlines()讀文件
While和for循環
for循環實現猜三次年紀
age = 66 count = 0 for i in range(3):guess_age = int(input('age:'))if guess_age == age:print("right")breakelif guess_age < age:print("too small")else:print("too large") else:print("you have tried too many times")while循環
作用:一般來說循環會一直執行到條件為假,或到序列元素用完時,但是有些時候會提前終止一些循環
- break : 直接跳出循環
- continue:跳出本次循環進行下一次循環
while循環實現猜三次年紀
age = 66 count = 0 while count < 3:guess_age = int(input('age:'))if guess_age == age:print("right")breakelif guess_age < age:print("too small")else:print("too large")count += 1 else:print("you have tried too many times")讀寫文件
open函數用來打開文件
open(name[, mode[, buffering]]) 打開文件可傳的參數
- open函數使用一個文件名作為唯一的強制參數,然后返回一個文件對象。
- 模式(mode)和緩沖(buffering)參數都是可選的
打開文件的模式有
? r,只讀模式(默認)。 ? w,只寫模式。【不可讀;不存在則創建;存在則刪除內容;】 ? a,追加模式。【可讀; 不存在則創建;存在則只追加內容;】 注: "+" 表示可以同時讀寫某個文件 ? w,只寫模式。【不可讀;不存在則創建;存在則刪除內容;】 ? w+,寫讀 ? a+,同awith語句
作用:將打開文件寫在with中當對文件操作完成后with語句會自動幫關閉文件,避免忘記寫f.close()
with讀文件
三種讀操作比較
- read(): 指定讀取指定大小的文件(默認一次讀取所有)
- readline(): 逐行讀取,適合讀大文件
- readlines(): 一次性讀取所有文件, 將文件按行讀取成列表
三種讀操作舉例說明
#1. read()一次讀取所有內容 '''aaa111 bbb222''' f = open(r"data.txt") print(f.read()) f.close()#2. readline(),每次只讀取一行,光標下移 ''' 0: aaa1111: bbb222 ''' f = open(r"data.txt") for i in range(2):print(str(i) + ": " + f.readline(),)#3. 一次讀取所有,每行作為列表的一個值 '''['aaa111\n', 'bbb222\n']''' f = open(r"data.txt") print(f.readlines())我們使用了一個 while 循環來讀取文件內容,每次最多讀取 8kb 大小
這樣可以避免之前需要拼接一個巨大字符串的過程,把內存占用降低非常多。
python讀寫大文件
#!/usr/bin/python # -*- coding: utf-8 -*- def read_big_file_v(fname):block_size = 1024 * 8with open(fname,encoding="utf8") as fp:while True:chunk = fp.read(block_size)# 當文件沒有更多內容時,read 調用將會返回空字符串 ''if not chunk:breakprint(chunk) path = r'C:\aaa\luting\edc-backend\tttt.py' read_big_file_v(path)read()讀文件
- read(n)讀取指定長度的文件
read讀取指定長度字符串
f = open(r"somefile.txt") print(f.read(7)) # Welcome 先讀出 7 個字符 print(f.read(4)) #‘ to ‘ 接著上次讀出 4 個字符 f.close()- seek(offset[, whence]) 隨機訪問
作用:從文件指定位置讀取或寫入
從指定位置寫入
f = open(r"somefile.txt", "w") f.write("01234567890123456789") f.seek(5) f.write("Hello, World!") f.close() f = open(r"somefile.txt") print(f.read()) # 01234Hello, World!89- tell 返回當前讀取到文件的位置下標
返回讀取位置下標
f = open(r"somefile.txt") f.read(1) f.read(2) print(f.tell()) # 3 3就是讀取到文件的第三個字符readline()讀文件
作用:readline 的用法,速度是fileinput的3倍左右,每秒3-4萬行,好處是 一行行讀 ,不占內存,適合處理比較大的文件,比如超過內存大小的文件
readline讀取大文件
f1 = open('test02.py','r') f2 = open('test.txt','w') while True:line = f1.readline()if not line:breakf2.write(line) f1.close() f2.close()readlines()讀文件
作用:readlines會把文件都讀入內存,速度大大增加,但是木有這么大內存,那就只能乖乖的用readline
f1=open("readline.txt","r") for line in f1.readlines():print(line)參考鏈接來自于此
總結
以上是生活随笔為你收集整理的while和for循环读取大文件三种读取文件方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新式类和经典类的区别类的特殊方法单例模式
- 下一篇: Python的常用模块