我想将invisible()
函数行为应用到我在脚本中得到的输出system("cmd.exe", input = command)
。但是,即使使用不可见,输出仍会显示在控制台中。有没有办法隐藏它?
编辑:我在命令中运行curl
以下载网页,输出是预期的卷曲输出。
EDIT2:可重复的例子
url <- "www.google.com"
command <- paste0('curl "',
url,
'"',
' -H "Pragma: no-cache" -H "Accept-Encoding: gzip, deflate, br" -H "Accept-Language: en-US,en;q=0.9" -H "Upgrade-Insecure-Requests: 1" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" -H "Cache-Control: no-cache" -H "Cookie: uupid69991=eb4c8ec5-1f94-4cf5-957d-e477a778f79c; uupid99993=eb4c8ec5-1f94-4cf5-957d-e477a778f79c; uupid89991=1; uupid79991=Fee_Based_Role; locale=en; uupid99991=1903 x 1012; IVZSESSIONID=CEHrDvYqpDuQ-zwy8YZpWwm1RWZHY3DGq4V7elBfxcH87XFFo-J_^! -175310928; _ga=GA1.2.1974800928.1524362050; _gid=GA1.2.1544243785.1524362050" -H "Connection: keep-alive" --compressed',
' > google.html')
invisible(system("cmd.exe", input = command))
控制台输出:
Microsoft Windows [Version 10.0.16299.371]
(c) 2017 Microsoft Corporation. All rights reserved.
C:\Users\gonza\OneDrive\Documents\etfcmfa>curl "www.google.com" -H "Pragma: no-cache" -H "Accept-Encoding: gzip, deflate, br" -H "Accept-Language: en-US,en;q=0.9" -H "Upgrade-Insecure-Requests: 1" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" -H "Cache-Control: no-cache" -H "Cookie: uupid69991=eb4c8ec5-1f94-4cf5-957d-e477a778f79c; uupid99993=eb4c8ec5-1f94-4cf5-957d-e477a778f79c; uupid89991=1; uupid79991=Fee_Based_Role; locale=en; uupid99991=1903 x 1012; IVZSESSIONID=CEHrDvYqpDuQ-zwy8YZpWwm1RWZHY3DGq4V7elBfxcH87XFFo-J_^! -175310928; _ga=GA1.2.1974800928.1524362050; _gid=GA1.2.1544243785.1524362050" -H "Connection: keep-alive" --compressed > google.html
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 231 100 231 0 0 982 0 --:--:-- --:--:-- --:--:-- 982
答案 0 :(得分:1)
您可以使用sink
功能转移R中的输出。
> curl::curl('https://stackoverflow.com/')
A connection with
description "https://stackoverflow.com/"
class "curl"
mode "r"
text "text"
opened "closed"
can read "yes"
can write "no"
> sink(file="nul") # set file = '/dev/null' if using Unix-based OS
> curl::curl('https://stackoverflow.com/') # no output
如果将file
设置为其他内容,则会将输出打印到该文件而不是控制台。
答案 1 :(得分:1)
在系统调用中使用intern=TRUE
。来自system
帮助页面:
intern
a logical (not NA) which indicates whether to capture the output of the command as an R character vector.
一旦你这样做,你可以使用隐形或只是存储结果,以防止它们被打印。
答案 2 :(得分:1)
将“ignore.stdout”或“ignore.stderr”属性(或两者)设置为 TRUE 可能会起作用(可能特定于 Unix 操作系统)。 “ignore.stdout”禁止写入“stdout”的消息,“ignore.stderr”禁止写入“stderr”的消息。
所以:
system(some_command, ignore.stdout = TRUE, ignore.stderr = TRUE)