Saya menggunakan python (Django Framework) untuk membaca file CSV. Saya menarik hanya 2 baris dari CSV ini seperti yang Anda lihat. Apa yang telah saya coba lakukan adalah menyimpan dalam variabel jumlah baris CSV juga.
Bagaimana saya bisa mendapatkan jumlah baris?
file = object.myfilePath
fileObject = csv.reader(file)
for i in range(2):
data.append(fileObject.next())
Saya telah mencoba:
len(fileObject)
fileObject.length
file_read
? Apakah itu pegangan file (seperti dalamfile_read = open("myfile.txt")
?Jawaban:
Anda perlu menghitung jumlah baris:
Menggunakan
sum()
dengan ekspresi generator membuat penghitung yang efisien, menghindari penyimpanan seluruh file dalam memori.Jika Anda sudah membaca 2 baris untuk memulai, maka Anda perlu menambahkan 2 baris tersebut ke total Anda; baris yang telah dibaca tidak dihitung.
sumber
\x1A
) dalam file? Bagaimana Anda membuka file tersebut?file.seek(0)
kemudianfileObject = csv.reader(file)
2018-10-29 EDIT
Terima kasih atas komentarnya
Saya menguji beberapa jenis kode untuk mendapatkan jumlah baris dalam file csv dalam hal kecepatan. Metode terbaik ada di bawah.
Ini kode yang diuji.
Hasilnya di bawah.
Kesimpulannya,
sum(1 for line in f)
paling cepat. Tetapi mungkin tidak ada perbedaan yang signifikan darilen(f.readlines())
.sample_submission.csv
berukuran 30,2MB dan memiliki 31 juta karakter.sumber
for row in csv_reader:
solusi ketika CSV seharusnya berisi baris baru dikutip yang valid sesuai dengan rfc4180 . @dixhom seberapa besar file yang telah Anda uji?Untuk melakukannya, Anda perlu memiliki sedikit kode seperti contoh saya di sini:
Saya harap ini membantu semua orang.
sumber
%time sum(1 for row in open("df_data_raw.csv"))
biaya 4,91 sementara%time len(open("df_data_raw.csv").readlines())
biaya 14,6.Beberapa saran di atas menghitung jumlah LINES di file csv. Tetapi beberapa file CSV akan berisi string yang dikutip yang berisi karakter baris baru. File MS CSV biasanya membatasi record dengan \ r \ n, tetapi menggunakan \ n sendiri dalam string yang dikutip.
Untuk file seperti ini, menghitung baris teks (seperti yang dipisahkan oleh baris baru) dalam file akan memberikan hasil yang terlalu besar. Jadi untuk penghitungan yang akurat Anda perlu menggunakan csv.reader untuk membaca catatan.
sumber
Pertama Anda harus membuka file dengan open
Kemudian gunakan csv.reader untuk membuka csv
Terakhir, Anda dapat mengambil jumlah baris dengan instruksi 'len'
Kode totalnya adalah ini:
Ingatlah bahwa jika Anda ingin menggunakan kembali file csv, Anda harus membuat input_file.fseek (0), karena ketika Anda menggunakan daftar untuk reader_file, itu membaca semua file, dan penunjuk di file mengubah posisinya
sumber
row_count = sum(1 for line in open(filename))
bekerja untuk saya.Catatan:
sum(1 for line in csv.reader(filename))
sepertinya menghitung panjang baris pertamasumber
sumber
file_read
ini tampaknyacsv.reader()
objek, sehingga tidak memiliki sebuahreadlines()
metode..readlines()
harus membuat daftar yang berpotensi besar, yang kemudian Anda buang lagi.ketika Anda membuat instance objek csv.reader dan Anda mengulang seluruh file, maka Anda dapat mengakses variabel instance yang disebut line_num yang memberikan jumlah baris:
sumber
sumber
Gunakan "daftar" agar sesuai dengan objek yang lebih bisa diterapkan.
Anda kemudian dapat menghitung, melewati, bermutasi sampai keinginan hati Anda:
sumber
Ini berfungsi untuk csv dan semua file yang berisi string di OS berbasis Unix:
Jika file csv berisi baris kolom, Anda dapat mengurangi satu dari di
numOfLines
atas:sumber
Anda juga dapat menggunakan for loop klasik:
sumber
mungkin ingin mencoba sesuatu yang sederhana seperti di bawah ini pada baris perintah:
sed -n '$=' filename
atauwc -l filename
sumber
Saya pikir kami dapat sedikit meningkatkan jawaban terbaik, saya menggunakan:
Selain itu, kita tidak boleh lupa kode pythonic tidak selalu memiliki performa terbaik dalam proyek ini. Sebagai contoh: Jika kita dapat melakukan lebih banyak operasi pada waktu yang sama dalam kumpulan data yang sama Lebih baik melakukan semua dalam bucle yang sama daripada membuat dua atau lebih bucle pythonic.
sumber
sumber
mencoba
dan dalam output Anda dapat melihat sesuatu seperti (aa, bb) di mana aa adalah # baris
sumber
data.shape[0]