【问题标题】:How to suppress output from RCurl's curlPerform?如何抑制 RCurl 的 curlPerform 的输出?
【发布时间】:2018-06-15 19:44:16
【问题描述】:

我已经为 FTP 开发这个 R 库已经有一段时间了,我最近的努力是尝试制作一个从 FTP 服务器中删除内容的函数。但是,我发现自己被这个问题迷惑了很长时间。

这是我删除文件的代码:

  ftpDelete <- function(credentials, address, directory, files) {
  status <- integer(length(files))
  names(status) <- files
  pb <- txtProgressBar(min = 0, max = length(files), style = 3)
  cd <- paste("CWD", directory)
  for (n in 1:length(files)) {
    sink("nul")
    status[n] <- tryCatch({
      dc <- paste("DELE", files[n])
      k <- curlPerform(url = getFTPURL(address), quote = c(cd, dc), userpwd = credentials, returntransfer = 1)
      0
    }, error = function(w) {
      return(1)
    })
    Sys.sleep(0.5)
    sink()
    setTxtProgressBar(pb, n)
  }
  close(pb)
  return(status)
}

每次我运行这段代码时,似乎都会打印出 FTP 文件夹的完整目录,这非常令人恼火,尤其是当我将这个功能应用于大量文件时。你们对如何隐藏输出有什么建议/智慧吗?作为参考,我在 Windows 10 上使用 RStudio,即使在整个函数调用中使用 sink(),我仍然可以打印整个目录。出去。

【问题讨论】:

    标签: r curl rstudio rcurl sink


    【解决方案1】:

    试试sink(type="message"),或者更好的是suppressMessages()。您可能还想考虑 curl 包作为 RCurl 的替代品。

    【讨论】:

    • 感谢您的快速回答!所以我已经尝试了这两种方法,但它们似乎都不起作用。关于 curl 包,我已经看过了,但我想知道你认为重构从 RCurl 到 curl 的所有内容会有多困难,因为它可能不值得。此外,如果您对如何抑制输出有任何其他想法,我们将不胜感激。
    • 其他选项可能是suppressWarnings(连同suppressMessages)、invisible()capture.output() 围绕那些产生控制台输出的函数调用。您是否怀疑可能是哪一个?
    • 我相当肯定是 curlPerform 函数导致了输出。它看起来不像标准输出那样的警告或消息,但由于某种原因,您提到的方法都没有关闭它。
    • @DanielMonteagudo 你找到解决方案了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多