Ho problemi con un codice che scorre in un gruppo di .csv e cancella la riga finale se non c'è nulla in esso (cioè file che terminano con \n
carattere newline)Python non riesce ad aprire 11gb csv in modalità r + ma si apre in modalità r
Il mio codice funziona correttamente su tutti i file tranne uno, che è il file più grande nella directory a 11 GB. Il secondo file più grande è 4,5 GB.
La linea non riesce a è semplicemente:
with open(path_str,"r+") as my_file:
e ottengo il seguente messaggio:
IOError: [Errno 22] invalid mode ('r+') or filename: 'F:\\Shapefiles\\ab_premium\\processed_csvs\\a.csv'
Il path_str
creo usando os.file.join
per evitare errori, e ho provato rinominando il file di a.csv
solo per assicurarsi che non ci fosse qualcosa di strano con il nome del file. Questo non ha fatto differenza.
Ancora più strano, il file è felice di aprire in modalità r. Cioè il seguente codice funziona bene:
with open(path_str,"r") as my_file:
Ho provato a navigare in tutto il file in modalità di lettura, ed è felice di leggere i caratteri all'inizio, fine, e nel mezzo del file.
Qualcuno sa di limiti sulla dimensione del file che Python può gestire o perché si potrebbe ricevere questo errore? Sono su Windows 7 a 64 bit e ho 16 GB di RAM.
Deve essere dovuto alla modalità testo. 'R + b' funziona? –
Il tuo programma sta facendo qualcos'altro con questi file csv, o semplicemente rimuovendo le newline finali in eccesso? –
@ PM2Ring Grazie. Sì, sta solo rimuovendo i newline finali. Se hai una soluzione più facile a questo problema, sono tutto orecchie :-) Ecco il codice: https://gist.github.com/RobinL/9895b764ca3ce61c8e37. Non ho chiesto una soluzione alternativa nella domanda perché sono curioso di scoprire la fonte di questo problema. – RobinL