나는 표준 R 명령으로이 RCurl 비 GUI 모드에서 무엇이며 현재 행을 덮어 쓰기를 다시 인쇄하는 것이 가능하다는 것을 의심 시작합니다.
나는 틀렸다고 말해 주어서 기쁩니다. 최소한 단일 회선의 경우 \r
이 트릭을 수행 할 수 있습니다.
conc=function(){
cat(" abcd")
cat(" ABCD", '\n')
}
conc()
# abcd ABCD
:하지만 사실 우리가 지금
library(RCurl) # Don't forget
### Callback function for curlPerform
progressDown=function(down, up, pcur, width){
total=as.numeric(down[1]) # Total size as passed from curlPerform
cur=as.numeric(down[2]) # Current size as passed from curlPerform
x=cur/total
px= round(100 * x)
## if(!is.nan(x) && px>60) return(pcur) # Just to debug at 60%
if(!is.nan(x) && px!=pcur){
x= round(width * x)
sc=rev(which(total> c(1024^0, 1024^1, 1024^2, 1024^3)))[1]-1
lb=c('B', 'KB', 'MB', 'GB')[sc+1]
cat(paste(c(
"\r |", rep.int(".", x), rep.int(" ", width - x),
sprintf("| %g%s of %g%s %3d%%",round(cur/1024^sc, 2), lb, round(total/1024^sc, 2), lb, px)),
collapse = ""))
flush.console() # if the outptut is buffered, it will go immediately to console
return(px)
}
return(pcur)
}
:
over=function(){
cat(" abcd")
cat("\r ABCD", "\n")
}
over()
# ABCD
주어진, 나는 같은 같은 줄에 항상 재 작성 다운로드 상태를 모니터링 할 수 있습니다이 progressDown
기능을 썼다 콜백을 사용할 수 있습니다. curlPerform
curlProgress=function(url, fname){
f = CFILE(fname, mode="wb")
width= getOption("width") - 25 # you can make here your line shorter/longer
pcur=0
ret=curlPerform(url=url, [email protected], noprogress=FALSE,
progressfunction=function(down,up) pcur<<-progressDown(down, up, pcur, width),
followlocation=T)
close(f)
cat('\n Download', names(ret), '- Ret', ret, '\n') # is success?
}
백45경1천5백15조5백36억9천1백36만3천2백10
작은 샘플 바이너리로 러닝
60 %의 중간 출력은 (더
#
보호)하지
curlProgress("http://www.nirsoft.net/utils/websitesniffer-x64.zip", "test.zip")
: 전체에 B, KB, MB, GB
조정한다 KB
|................................. | 133.74KB of 222.75KB 60%
를 기초 크기. 성공 상태
최종 출력된다 :
|.......................................................| 222.61KB of 222.75KB 100%
Download OK - Ret 0
참고 출력 라인 폭 (라인에 열들의 최대 수를 제어하는) 상기 curlProgress
변화 정의 할 수 R 폭 옵션 상대적 줄 :
width= getOption("width") - 25
이것은 내 필요에 충분하며 내 자신의 질문을 해결합니다.