Câu trả lời:
f = open(fname,'r')
lines = f.readlines()[1:]
f.close()
['a', 'b', 'c'][1:]
=>['b', 'c']
consume()
từ more-itertools
như đã nêu trong docs.python.org/3/l Library / itemools.html # itertools-recipes thì sao? Tôi đã nghe về điều này trên stackoverflow.com/questions/11113803
Nếu bạn muốn dòng đầu tiên và sau đó bạn muốn thực hiện một số thao tác trên tệp, mã này sẽ hữu ích.
with open(filename , 'r') as f:
first_line = f.readline()
for line in f:
# Perform some operations
Nếu cắt có thể làm việc trên các vòng lặp ...
from itertools import islice
with open(fname) as f:
for line in islice(f, 1, None):
pass
f = open(fname).readlines()
firstLine = f.pop(0) #removes the first line
for line in f:
...
Để khái quát hóa nhiệm vụ đọc nhiều dòng tiêu đề và để cải thiện khả năng đọc, tôi sử dụng phương pháp trích xuất. Giả sử bạn muốn mã hóa ba dòng đầu tiên coordinates.txt
để sử dụng làm thông tin tiêu đề.
Thí dụ
coordinates.txt
---------------
Name,Longitude,Latitude,Elevation, Comments
String, Decimal Deg., Decimal Deg., Meters, String
Euler's Town,7.58857,47.559537,0, "Blah"
Faneuil Hall,-71.054773,42.360217,0
Yellowstone National Park,-110.588455,44.427963,0
Sau đó, trích xuất phương thức cho phép bạn chỉ định những gì bạn muốn làm với thông tin tiêu đề (trong ví dụ này, chúng tôi chỉ đơn giản là mã hóa các dòng tiêu đề dựa trên dấu phẩy và trả về dưới dạng danh sách nhưng vẫn còn nhiều thứ phải làm).
def __readheader(filehandle, numberheaderlines=1):
"""Reads the specified number of lines and returns the comma-delimited
strings on each line as a list"""
for _ in range(numberheaderlines):
yield map(str.strip, filehandle.readline().strip().split(','))
with open('coordinates.txt', 'r') as rh:
# Single header line
#print next(__readheader(rh))
# Multiple header lines
for headerline in __readheader(rh, numberheaderlines=2):
print headerline # Or do other stuff with headerline tokens
Đầu ra
['Name', 'Longitude', 'Latitude', 'Elevation', 'Comments']
['String', 'Decimal Deg.', 'Decimal Deg.', 'Meters', 'String']
Nếu coordinates.txt
chứa một tiêu đề khác, chỉ cần thay đổi numberheaderlines
. Trên hết, rõ ràng những gì __readheader(rh, numberheaderlines=2)
đang làm và chúng tôi tránh sự mơ hồ khi phải tìm ra hoặc nhận xét về lý do tại sao tác giả của câu trả lời được chấp nhận sử dụng next()
trong mã của mình.
Nếu bạn muốn đọc nhiều tệp CSV bắt đầu từ dòng 2, điều này hoạt động như một cơ duyên
for files in csv_file_list:
with open(files, 'r') as r:
next(r) #skip headers
rr = csv.reader(r)
for row in rr:
#do something
(đây là một phần câu trả lời của Parfait cho một câu hỏi khác)
# Open a connection to the file
with open('world_dev_ind.csv') as file:
# Skip the column names
file.readline()
# Initialize an empty dictionary: counts_dict
counts_dict = {}
# Process only the first 1000 rows
for j in range(0, 1000):
# Split the current line into a list: line
line = file.readline().split(',')
# Get the value for the first column: first_col
first_col = line[0]
# If the column value is in the dict, increment its value
if first_col in counts_dict.keys():
counts_dict[first_col] += 1
# Else, add to the dict and set value to 1
else:
counts_dict[first_col] = 1
# Print the resulting dictionary
print(counts_dict)
next(f)
sử dụngf.readline()
và lưu trữ dưới dạng một biến