Se non si desidera scaricare il file prima di conoscere la sua dimensione, si può provare qualcosa di simile:
Nota: Funzionerà solo su Mac o Linux.
file_url = 'http://math.ucdenver.edu/RTutorial/titanic.txt'
curl_cmd = paste('curl -X HEAD -i', file_url)
system_cmd = paste(curl_cmd, '|grep Content-Length |cut -d : -f 2')
Quanto sopra confezionare insieme una stringa da eseguire utilizzando system()
. La stringa curl_cmd
dice a curl di andare a ottenere solo l'intestazione del file.
I pacchetti di stringhe system_cmd
su alcuni comandi aggiuntivi per analizzare l'intestazione ed estrarre solo il file.
Ora, chiamare system()
e utilizzare l'argomento intern = TRUE
per comunicare a R di trattenere l'output.
b <- system(system_cmd, intern = TRUE)
## % Total % Received % Xferd Average Speed Time Time Time Current
## Dload Upload Total Spent Left Speed
## 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
## curl: (18) transfer closed
Scaricherà solo l'intestazione del file e lo analizzerà per ottenere il file. Ora b
sarà il file in byte.
Poi si può decidere come aprire il file, o stampare qualcosa di amichevole come:?
print(paste("There are", as.numeric(b)/1e6, "mb in the file:", file_url))
## [1] "There are 0.055692 mb in the file: http://math.ucdenver.edu/RTutorial/titanic.txt"
'file.info' è probabilmente quello che si vuole. – cory
https://stackoverflow.com/questions/20921593/how-to-determine-the-file-size-of-a-remote-download-without-reading-the-entire-f è probabilmente quello che vuoi –