用python進行資料分析的童鞋們,經常遇到的問題就是遇到乙個資料檔案,大概幾百兆,而只需要其中若干行資料。那麼我們怎麼辦?最笨的辦法,就是一次性將所有的檔案資料載入到記憶體中再做索引或切片處理,可能一次性載入就需要耗費一點時間。如果重複性地做這種事情,你都會覺得不好意思跟自己交代。
1. 讀取檔案頭部若干行
2. 讀取檔案尾部若干行
3. 讀取檔案任意位置若干行
當然,你可以直接記住「讀取檔案任意位置若干行」這個大招,不用管其它。。
fp = open('test.txt', 'r')
n_lines = 9 ## 設定需要讀取的行數
while n_lines>0:
print fp.readline(),
n_lines -= 1
fp.close()
fp = open('test.txt', 'r')
fp.seek(0, 2) # again set the pointer to the end
file_size = fp.tell()
n_lines = 9 ## 設定需要讀取的行數
## 1.讀取合適大小的內容
k, buffer_size = 1, 1024*1024
while k*buffer_size<=file_size:
fp.seek(-k*buffer_size, 2)
lines = fp.read()
n_k = 0
for c in lines[::-1]:
if c == '\n':
n_k += 1
if n_k<=n_lines:
k += 1
else:
break
fp.seek(-k*buffer_size, 2)
lines = fp.read()
## 2.輸出規定的行數
rindex = lines.rfind('\n')
while n_lines>0:
rindex = lines.rfind('\n', 0, rindex)
n_lines -= 1
print lines[rindex+1:]
fp.close()
import csv
import pandas as pd
def loaddata(file_path, skip_n, rows_n):
lines = sum(1 for _ in csv.reader(open(file_path)))
# print lines
data = pd.read_csv(file_path,
engine='c',
header=none,
skiprows=lines-skip_n,
nrows=rows_n,
)return data
n_to_end = 9
n_lines = 9
data = loaddata('test.txt', n_to_end, n_lines) # 從倒數第n_to_end行數開始讀取n_lines行
print data
python快速讀取excel
python處理excel資料也是經常需要用到的。本文介紹2種python讀取excel的方法 openpyxl和pandas。事實上,pandas讀取excel比openpyxl更方便,有需要的直接往後拉,看第二種。import openpyxl excel name t1.xlsx wb ope...
快速讀取SharedPreferences資料
在開發時時常要用到sharedpreferences存入和讀取一些資料,如果activity很多的話,每次都定義一次sharedpreferences非常麻煩。其實可以很簡單地將sharedpreferences的讀寫抽出來形成乙個工具類,方便呼叫 public class sharedprefer...
PHP如何快速讀取大檔案
在php中,對於檔案的讀取時,最快捷的方式莫過於使用一些諸如file file get contents之類的函式,簡簡單單的幾行 就能 很漂亮的完成我們所需要的功能。但當所操作的檔案是乙個比較大的檔案時,這些函式可能就顯的力不從心,下面將從乙個需求入手來說明對於讀取大檔案時,常用的操作方法。需求需...