當前位置:首頁 » 編程語言 » python大文件處理

python大文件處理

發布時間: 2022-08-16 09:58:44

① 怎樣用python實現大文件遍歷並修改內容

用生成器處理大文本文件,效率超級高。
2個多G文件,7秒處理完。

② 使用Python 處理大文件有什麼推薦的方式么

以前弄過一些組學的文件,如果是純文本的話不要用 for..in..語句,用 readlines 讀入幾千行後再用 readline 處理,如果是 utf8 之類非等長的位元組編碼的話先按 byte 編碼讀入文本必要時再解析成別的,最後把文件塞到內存檔再加個多進程。如果要求不高用 bash+awk 比 python 快很多。

③ python 如何讀取大文件

你可以不用一次讀完存到內存里,可以一行一行的讀,用.readline()讀一行處理一行,這樣不會占很多內存,多大的文件都沒關系

④ 想用python處理比較大的單色圖片文件,如何提高速度

你好,你可以考慮使用numpy的函數來做,下面是例子的python代碼

image=np.zeros((400,400,3),dtype="uint8")
raw=image.()
image[np.where((image==[0,0,0]).all(axis=2))]=[255,255,255]
cv2.imshow('Test0',image)
lower_black=np.array([0,0,0],dtype="uint16")
upper_black=np.array([70,70,70],dtype="uint16")
black_mask=cv2.inRange(image,lower_black,upper_black)
image[np.where((image==[0,0,0]).all(axis=2))]=[155,255,155]
black_mask[np.where(black_mask==[0])]=[155]

你把上面的那個image的數值改成你需要改的目標就可以直接替換了。

⑤ python 讀取大文件數據怎麼快速讀取

python中讀取數據的時候有幾種方法,無非是read,readline,readlings和xreadlines幾種方法,在幾種方法中,read和xreadlines可以作為迭代器使用,從而在讀取大數據的時候比較有效果.

在測試中,先創建一個大文件,大概1GB左右,使用的程序如下:

[python] view plainprint?
import os.path
import time
while os.path.getsize('messages') <1000000000:
f = open('messages','a')
f.write('this is a file/n')
f.close()

print 'file create complted'

在這里使用循環判斷文件的大小,如果大小在1GB左右,那麼結束創建文件。--需要花費好幾分鍾的時間。

測試代碼如下:

[python] view plainprint?
#22s
start_time = time.time()
f = open('messages','r')
for i in f:
end_time = time.time()
print end_time - start_time
break
f.close()

#22s
start_time = time.time()
f = open('messages','r')
for i in f.xreadlines():
end_time = time.time()
print end_time - start_time
break
f.close()

start_time = time.time()
f = open('messages','r')
k= f.readlines()
f.close()
end_time = time.time()
print end_time - start_time

使用迭代器的時候,兩者的時間是差不多的,內存消耗也不是很多,使用的時間大概在22秒作用
在使用完全讀取文件的時候,使用的時間在40s,並且內存消耗相當嚴重,大概使用了1G的內存。。

其實,在使用跌倒器的時候,如果進行連續操作,進行print或者其他的操作,內存消耗還是不可避免的,但是內存在那個時候是可以釋放的,從而使用迭代器可以節省內存,主要是可以釋放。
而在使用直接讀取所有數據的時候,數據會保留在內存中,是無法釋放這個內存的,從而內存卡死也是有可能的。

在使用的時候,最好是直接使用for i in f的方式來使用,在讀取的時候,f本身就是一個迭代器,其實也就是f.read方法

⑥ 內存不足時,python如何處理大文件

手機隨著使用應用軟體,肯定會產生很多垃圾緩存
所以要定期的清理垃圾緩存,就可以了
可以裝個騰訊手機管家,打開清理加速功能,可以自動檢測出手機垃圾緩存,一鍵清理

⑦ 如何用python快速讀取幾G以上的大文件

如果你沒那麼大的內存 解決方法有幾個:

  1. 使用swap 一次性read()讀取

  2. 系統層面分割大文件為數個小於系統內存的小文件,分別讀取

  3. 使用python 按數據大小逐塊讀取,使用完數據即釋放該部分內存:

whileTrue:
chunk_data=file_object.read(chunk_size)
ifnotchunk_data:
break
yieldchunk_data

⑧ 如何用python排序大文件的csv文件

分割文件為多個小文件,開啟多線程依次對每個小文件讀取放到資料庫,在資料庫裡面排序好了,再讀出來,保存成CSV.
個人覺得這樣:
1.分割成小文件,處理每個文件的時候,佔用內存比較小
2.多線程處理速度快
3.資料庫比較擅長排序,如果用python的列表排序,都要讀入內存,太占內存了.

⑨ python 一個文件太大+內存裝不下+怎麼讀取 mongo

Python 環境下文件的讀取問題,請參見拙文Python 基礎 —— 文件

這是一道著名的 Python 面試題,考察的問題是,Python 讀取大文件和一般規模的文件時的區別,也即哪些介面不適合讀取大文件。

1. read() 介面的問題

f = open(filename, 'rb')
f.read()12

我們來讀取 1 個 nginx 的日至文件,規模為 3Gb 大小。read() 方法執行的操作,是一次性全部讀入內存,顯然會造成:

MemoryError...12

也即會發生內存溢出。

2. 解決方案:轉換介面

  • (1)readlines() :讀取全部的行,構成一個 list,實踐表明還是會造成內存的問題;

    for line in f.reanlines(): ...
  • 1

  • 2

  • (2)readline():每次讀取一行,

    while True:
    line = f.readline() if not line: break
  • 1

  • 2

  • 3

  • 4

  • (3)read(1024):重載,指定每次讀取的長度

    while True: block = f.read(1024) if not block: break
  • 1

  • 2

  • 3

  • 4

  • 3. 真正 Pythonic 的方法

    真正 Pythonci 的方法,使用 with 結構:

  • with open(filename, 'rb') as f: for line in f:

  • <do something with the line>123

  • 對可迭代對象 f,進行迭代遍歷:for line in f,會自動地使用緩沖IO(buffered IO)以及內存管理,而不必擔心任何大文件的問題。

    There should be one – and preferably only one – obvious way to do it.

⑩ python對文件的讀操作方法有哪些

摘要 1 文件讀取全文本操作

熱點內容
壓縮段的作 發布:2025-01-20 07:04:13 瀏覽:377
安卓studio字體如何居中 發布:2025-01-20 07:04:13 瀏覽:151
edge瀏覽器無法訪問 發布:2025-01-20 06:52:57 瀏覽:329
c語言inline函數 發布:2025-01-20 06:45:43 瀏覽:747
安卓手機如何把鎖屏時間去掉 發布:2025-01-20 06:34:16 瀏覽:434
linux卸載jdk17 發布:2025-01-20 06:33:29 瀏覽:231
猿編程使用 發布:2025-01-20 06:17:58 瀏覽:453
編譯lichee 發布:2025-01-20 06:16:33 瀏覽:157
f5演算法 發布:2025-01-20 06:11:39 瀏覽:256
吃雞游戲伺服器被鎖怎麼辦 發布:2025-01-20 06:04:21 瀏覽:176