我必須訪問CSV文件中的第N行。訪問csv文件的第N行的最佳方法
這裏就是我所做的:
import csv
the_file = open('path', 'r')
reader = csv.reader(the_file)
N = input('What line do you need? > ')
i = 0
for row in reader:
if i == N:
print("This is the line.")
print(row)
break
i += 1
the_file.close()
...但是這並不覺得最佳。精確編輯:如果文件很大,我不想瀏覽所有行,我不想將整個文件加載到內存中。
我確實希望存在類似reader[N]
的東西,但我還沒有找到它。
爲編輯答案:這條線(從選擇的答案來)就是我一直在尋找:
next(itertools.islice(csv.reader(f), N, None)
是在代碼緊湊性方面「最佳」?可以做'行= [行閱讀器中的行]',然後'行[N]'。請注意,像其他一些答案一樣,這需要讀取整個文件。 – OJFord 2014-12-05 01:49:27
這個問題似乎是無關緊要的,因爲它是關於工作代碼的優化,最適合於//codereview.stackexchange.com – Alex 2014-12-05 10:00:14
正如Ollie所說,無論代碼是什麼樣子,你都從0的位置開始文件,並將位置x。這不像一個數組可以快速跳到正確的位置的數學。 – David 2014-12-05 10:46:31