1. 要用python從幾百萬行數據的文件一行行讀數據並計算,如何處理最快,哪位大牛可以指點一下
如果你的數據互相有關系的話,你就只能用readline一行完了之後再處理一行;
如果你的數據是每行不相乾的,那你應該可以把文件分成幾段,每段分配一個thread處理;
如果你的數據時每行不相干,而且你對數據的操作不很復雜的話,應該可以考慮用gpu來代替cpu並行處理。
2. 求一個腳本,如何利用python(python 2.7)分割超大的文本文件可以指定按大小或按行數
defsplitfile(filename,sizelimit,forline=True):
size=0
i=1
out=open("%s.%04d"%(filename,i),'w')
forlineinopen(filename):
size=size+1ifforlineelsesize+len(line)
if(size>sizelimit):
size=1ifforlineelselen(line)
out.close()
i+=1
out=open("%s.%04d"%(filename,i),'w')
out.write(line)
out.close()
if__name__=='__main__':
filename=raw_input("請輸入要分隔的文件名:")
forline=raw_input("輸入數字0按行分隔,輸入其它按大小分隔(請輸入:)")
forline=(int(forline)==0)
sizelimit=int(raw_input("請輸入分割文件的大小:"))
splitfile(filename,sizelimit,forline)
函數splitfile的前二個參數為文件名,分割大小,,第三個參數為True時按行分割,為False時按大小分割
3. 用python修改文件中指定的行數
python默認庫不能隨機讀寫文件。只能一次讀入和寫入。以下是示例代碼。
filename='setup.ini'
lines=[]
withopen(filename,'r',encoding='utf8')asf:
lines=f.readlines()
lines[167]='UPI1=Chinese'
lines[231]='UPI1=Chinese'
withopen(filename,'w',encoding='utf8')asf:
f.write(' '.join(lines))
f.flush()
修改需謹慎,修改前請記得備份,不明白可追問。
4. 如何用python快速讀取幾G以上的大文件
如果你沒那麼大的內存 解決方法有幾個:
使用swap 一次性read()讀取
系統層面分割大文件為數個小於系統內存的小文件,分別讀取
使用python 按數據大小逐塊讀取,使用完數據即釋放該部分內存:
whileTrue:
chunk_data=file_object.read(chunk_size)
ifnotchunk_data:
break
yieldchunk_data
5. python 文件內容操作,如一個文件100萬條數據,查詢相同行數
使用open函數逐行讀取文件,依次對比,如包含要求字元串,則數量累加1,讀取完成後可統計出行數,代碼如下:
n=0
forlineinopen('filename','r'):
if'固定字元串'inline:
n+=1
print(n)
說明:
使用 for line in open這種方式可以提高代碼效率,如需要更復雜統計,例如重復行,則可以使用hash函數,把行hash值存入列表,再做統計。
6. python怎麼讀取指定行數據,行數為第10000(很大)行
讀取文件某一行的內容(測試過1G大小的文件,效率還可以)
import linecache
count = linecache.getline(filename,linenum)
7. 我在用Python寫Excel文件時,當其中行數或列數超過256時就報錯,請幫忙看一下,我剛開始用,不是很明白
我也遇到過,後來就改成win32com操作excel(只使用Windows),並且讀寫都很方便。使用方法你網路搜一下很多的
8. 已知在文本文件什麼中有480個記錄,每個記錄
摘要 月小煙
9. Python 計算一個文件中有多少行即讀取文件行數
with open(file) as f:
text=f.read()
length=len(text.splitlines())
10. python統計一個大文件中很多小文件裡面的詞頻
#!/usr/bin/envpython3.6
fromcollectionsimportCounter
fromfunctoolsimportrece
fromoperatorimportadd
frompathlibimportPath
ps=Path().glob('*.txt')
c=rece(add,[Counter(p.read_text().split())forpinps])
print(c.most_common())