如何抑制RCurl的curlPerform的输出?

ercv8c1e  于 2022-11-13  发布在  其他
关注(0)|答案(2)|浏览(149)

我一直在为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(),我仍然会打印整个目录。

anauzrmj

anauzrmj1#

我有过这个问题,今天我相信我已经找到了一个解决方案。在curlperform中有一个选项verbose = F。如果这对你们有用,请更新。

2lpgd968

2lpgd9682#

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

相关问题