Jeśli nie chcesz, aby pobrać plik przed znając jego rozmiar, można spróbować coś takiego:
Uwaga: działa to tylko na komputerach Mac lub 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')
Powyższy będzie pakować razem ciąg być wykonywane przy użyciu system()
. Łańcuch curl_cmd
mówi curl, aby uzyskać tylko nagłówek pliku.
Pakiety ciągów na niektórych dodatkowych komendach, aby przeanalizować nagłówek i wyodrębnić tylko rozmiar pliku.
Teraz zadzwoń pod system()
i użyj argumentu intern = TRUE
, aby powiedzieć R, aby przytrzymał wyjście.
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
Będzie pobierać tylko nagłówek pliku i przeanalizować go, aby uzyskać rozmiar pliku. Teraz b
będzie rozmiar pliku w bajtach.
Następnie można zdecydować, jak otworzyć plik lub drukuj coś przyjazny jak:
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' jest chyba to, co chcesz. – cory
https://stackoverflow.com/questions/20921593/how-to-determine-the-file-size-of-a-remote-download-without-reading-the-entire-f prawdopodobnie jest to, co chcesz –