日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

while和for循环读取大文件三种读取文件方式

發布時間:2025/3/21 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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+,同a

with語句

作用:將打開文件寫在with中當對文件操作完成后with語句會自動幫關閉文件,避免忘記寫f.close()
 
with讀文件

with open("data1.txt",'r',encoding = 'utf-8') as f:for line in f:print(line)

三種讀操作比較

  • 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循环读取大文件三种读取文件方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。