Chúng tôi có một tệp dữ liệu thô lớn mà chúng tôi muốn cắt theo kích thước được chỉ định.
Làm thế nào tôi có thể nhận được các dòng N đầu tiên của một tệp văn bản trong Python? HĐH sẽ được sử dụng có ảnh hưởng gì đến việc thực hiện không?
Đã hỏi ngày 20 tháng 11 năm 2009 lúc 0:09Nov 20, 2009 at 0:09
1
Python 3:
with open["datafile"] as myfile:
head = [next[myfile] for x in range[N]]
print[head]
Python 2:
with open["datafile"] as myfile:
head = [next[myfile] for x in xrange[N]]
print head
Đây là một cách khác [cả Python 2 & 3]:
from itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
Đã trả lời ngày 20 tháng 11 năm 2009 lúc 0:27Nov 20, 2009 at 0:27
John La Rooyjohn La RooyJohn La Rooy
288K51 Huy hiệu vàng359 Huy hiệu bạc500 Huy hiệu Đồng51 gold badges359 silver badges500 bronze badges
16
N = 10
with open["file.txt", "a"] as file: # the a opens it in append mode
for i in range[N]:
line = next[file].strip[]
print[line]
AMC
2.5827 Huy hiệu vàng12 Huy hiệu bạc34 Huy hiệu đồng7 gold badges12 silver badges34 bronze badges
Đã trả lời ngày 20 tháng 11 năm 2009 lúc 2:04Nov 20, 2009 at 2:04
ghostdog74ghostdog74ghostdog74
317K56 Huy hiệu vàng254 Huy hiệu bạc341 Huy hiệu Đồng56 gold badges254 silver badges341 bronze badges
4
Nếu bạn muốn đọc các dòng đầu tiên một cách nhanh chóng và bạn không quan tâm đến hiệu suất, bạn có thể sử dụng
from itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
4 trả về đối tượng danh sách và sau đó cắt danh sách.Ví dụ. Đối với 5 dòng đầu tiên:
with open["pathofmyfileandfileandname"] as myfile:
firstNlines=myfile.readlines[][0:5] #put here the interval you want
Lưu ý: Toàn bộ tệp được đọc, vì vậy không phải là tốt nhất từ quan điểm hiệu suất nhưng nó rất dễ sử dụng, nhanh chóng để viết và dễ nhớ vì vậy nếu bạn muốn thực hiện một số tính toán một lần là rất thuận tiện the whole file is read so is not the best from the performance point of view but it is easy to use, fast to write and easy to remember so if you want just perform some one-time calculation is very convenient
print firstNlines
Một lợi thế so với các câu trả lời khác là khả năng chọn dễ dàng phạm vi của các dòng, ví dụ: Bỏ qua 10 dòng đầu tiên
from itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
5 hoặc 10 from itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
6 kéo dài hoặc chỉ lấy các dòng chẵn from itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
7.Đã trả lời ngày 7 tháng 12 năm 2013 lúc 12:59Dec 7, 2013 at 12:59
G mg mG M
19.1k10 Huy hiệu vàng78 Huy hiệu bạc80 Huy hiệu Đồng10 gold badges78 silver badges80 bronze badges
7
Những gì tôi làm là gọi các dòng N bằng
from itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
8. Tôi nghĩ rằng hiệu suất không phải là tốt nhất, nhưng ví dụ nếu from itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
9:import pandas as pd
yourfile = pd.read_csv['path/to/your/file.csv',nrows=1000]
AMC
2.5827 Huy hiệu vàng12 Huy hiệu bạc34 Huy hiệu đồng7 gold badges12 silver badges34 bronze badges
Đã trả lời ngày 20 tháng 11 năm 2009 lúc 2:04Apr 11, 2017 at 14:54
317K56 Huy hiệu vàng254 Huy hiệu bạc341 Huy hiệu ĐồngRRuiz
Nếu bạn muốn đọc các dòng đầu tiên một cách nhanh chóng và bạn không quan tâm đến hiệu suất, bạn có thể sử dụng
4 trả về đối tượng danh sách và sau đó cắt danh sách.21 silver badges27 bronze badges
from itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
4
Ví dụ. Đối với 5 dòng đầu tiên:
Lưu ý: Toàn bộ tệp được đọc, vì vậy không phải là tốt nhất từ quan điểm hiệu suất nhưng nó rất dễ sử dụng, nhanh chóng để viết và dễ nhớ vì vậy nếu bạn muốn thực hiện một số tính toán một lần là rất thuận tiện
print firstNlines
u0b34a0f6ae
Một lợi thế so với các câu trả lời khác là khả năng chọn dễ dàng phạm vi của các dòng, ví dụ: Bỏ qua 10 dòng đầu tiên
5 hoặc 10 from itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
6 kéo dài hoặc chỉ lấy các dòng chẵn from itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
7.14 gold badges89 silver
badges100 bronze badgesfrom itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
Đã trả lời ngày 20 tháng 11 năm 2009 lúc 0:27Nov 20, 2009 at 0:27
John La Rooyjohn La Rooyartdanil
288K51 Huy hiệu vàng359 Huy hiệu bạc500 Huy hiệu Đồng2 gold badges32 silver badges49 bronze badges
1
AMC
2.5827 Huy hiệu vàng12 Huy hiệu bạc34 Huy hiệu đồng
Đã trả lời ngày 20 tháng 11 năm 2009 lúc 2:04
317K56 Huy hiệu vàng254 Huy hiệu bạc341 Huy hiệu Đồng
# Method 1:
with open["fileName", "r"] as f:
counter = 0
for line in f:
print line
counter += 1
if counter == N: break
# Method 2:
with open["fileName", "r"] as f:
for i in xrange[N]:
line = f.next[]
print line
Nếu bạn muốn đọc các dòng đầu tiên một cách nhanh chóng và bạn không quan tâm đến hiệu suất, bạn có thể sử dụng
from itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
4 trả về đối tượng danh sách và sau đó cắt danh sách.Ví dụ. Đối với 5 dòng đầu tiên:Mar 2, 2018 at 23:42
Lưu ý: Toàn bộ tệp được đọc, vì vậy không phải là tốt nhất từ quan điểm hiệu suất nhưng nó rất dễ sử dụng, nhanh chóng để viết và dễ nhớ vì vậy nếu bạn muốn thực hiện một số tính toán một lần là rất thuận tiệnFatihAkici
1 gold badge28 silver badges47 bronze badgesprint firstNlines
1
Một lợi thế so với các câu trả lời khác là khả năng chọn dễ dàng phạm vi của các dòng, ví dụ: Bỏ qua 10 dòng đầu tiên
from itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
5 hoặc 10 from itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
6 kéo dài hoặc chỉ lấy các dòng chẵn from itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
7.class File[file]:
def head[self, lines_2find=1]:
self.seek[0] #Rewind file
return [self.next[] for x in xrange[lines_2find]]
def tail[self, lines_2find=1]:
self.seek[0, 2] #go to end of file
bytes_in_file = self.tell[]
lines_found, total_bytes_scanned = 0, 0
while [lines_2find+1 > lines_found and
bytes_in_file > total_bytes_scanned]:
byte_block = min[1024, bytes_in_file-total_bytes_scanned]
self.seek[-[byte_block+total_bytes_scanned], 2]
total_bytes_scanned += byte_block
lines_found += self.read[1024].count['\n']
self.seek[-total_bytes_scanned, 2]
line_list = list[self.readlines[]]
return line_list[-lines_2find:]
Usage:
with open["datafile"] as myfile:
head = [next[myfile] for x in xrange[N]]
print head
0Đã trả lời ngày 7 tháng 12 năm 2013 lúc 12:59Jan 20, 2011 at 19:42
G mg mfdb
19.1k10 Huy hiệu vàng78 Huy hiệu bạc80 Huy hiệu Đồng1 gold badge19 silver badges20 bronze badges
Những gì tôi làm là gọi các dòng N bằng
from itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
8. Tôi nghĩ rằng hiệu suất không phải là tốt nhất, nhưng ví dụ nếu from itertools import islice
with open["datafile"] as myfile:
head = list[islice[myfile, N]]
print[head]
9:with open["datafile"] as myfile:
head = [next[myfile] for x in xrange[N]]
print head
1Đã trả lời ngày 11 tháng 4 năm 2017 lúc 14:54
Rruizrruiz
2.06921 Huy hiệu bạc27 Huy hiệu đồngDec 7, 2011 at 8:26
1
Không có phương pháp cụ thể để đọc số dòng được hiển thị bởi đối tượng tệp.
with open["datafile"] as myfile:
head = [next[myfile] for x in xrange[N]]
print head
2Tôi đoán cách dễ nhất sẽ theo sau:Oct 28, 2016 at 2:36
lines =[]
with open[file_name] as f:
lines.extend[f.readline[] for i in xrange[N]]
Surya46.6K14 Huy hiệu vàng89 Huy hiệu bạc100 Huy hiệu đồng4 gold badges56 silver badges37 bronze badges
Artdanilartdanil
with open["datafile"] as myfile:
head = [next[myfile] for x in xrange[N]]
print head
34.7222 Huy hiệu vàng32 Huy hiệu bạc49 Huy hiệu đồngNov 20, 2009 at 2:00
Hai cách thực hiện trực quan nhất sẽ là:John Machin
Lặp lại trên từng dòng tệp và
0 sau các dòng N = 10
with open["file.txt", "a"] as file: # the a opens it in append mode
for i in range[N]:
line = next[file].strip[]
print[line]
1.11 gold badges138 silver badges185 bronze badgesN = 10
with open["file.txt", "a"] as file: # the a opens it in append mode
for i in range[N]:
line = next[file].strip[]
print[line]
0
Lặp lại trên từng dòng tệp bằng phương pháp
N = 10
with open["file.txt", "a"] as file: # the a opens it in append mode
for i in range[N]:
line = next[file].strip[]
print[line]
2 N = 10
with open["file.txt", "a"] as file: # the a opens it in append mode
for i in range[N]:
line = next[file].strip[]
print[line]
1 lần. [Đây về cơ bản chỉ là một cú pháp khác cho những gì câu trả lời hàng đầu làm.]with open["datafile"] as myfile:
head = [next[myfile] for x in xrange[N]]
print head
4Đây là mã:Nov 25, 2014 at 5:00
1
Điểm mấu chốt là, miễn là bạn không sử dụng
N = 10
with open["file.txt", "a"] as file: # the a opens it in append mode
for i in range[N]:
line = next[file].strip[]
print[line]
4 hoặc N = 10
with open["file.txt", "a"] as file: # the a opens it in append mode
for i in range[N]:
line = next[file].strip[]
print[line]
5ing toàn bộ tệp vào bộ nhớ, bạn có rất nhiều tùy chọn.with open["datafile"] as myfile:
head = [next[myfile] for x in xrange[N]]
print head
5
Đã trả lời ngày 2 tháng 3 năm 2018 lúc 23:42
Fatihakicifatihakici7 gold badges35 silver badges32 bronze badges
4.4011 Huy hiệu vàng28 Huy hiệu bạc47 Huy hiệu đồngAug 23, 2019 at 19:18
1
Dựa trên câu trả lời được bỏ phiếu hàng đầu của Gnibbler [ngày 20 tháng 11 '09 lúc 0:27]: Phương thức thêm lớp này [] và đuôi [] để tệp đối tượng.
with open["datafile"] as myfile:
head = [next[myfile] for x in xrange[N]]
print head
6Đã trả lời ngày 20 tháng 1 năm 2011 lúc 19:42
FDBFDB
with open["datafile"] as myfile:
head = [next[myfile] for x in xrange[N]]
print head
71.9781 Huy hiệu vàng19 Huy hiệu bạc20 Huy hiệu Đồng
cách của riêng tôi:Jul 8, 2021 at 22:07
2
Giải pháp dựa trên danh sách Hiểu danh sách Hàm Open [] hỗ trợ giao diện lặp. Việc liệt kê [] bao gồm Open [] và trả về các bộ dữ liệu [chỉ mục, mục], sau đó chúng tôi kiểm tra xem chúng tôi có bên trong một phạm vi được chấp nhận không [nếu tôi