我知道在此平台上有许多与此主题相关的帖子,但是没有代码/解决方案能够解决我关于从FTP服务器到R的数据导入的问题。希望能找到解决方案。
我正在尝试从ftp服务器将csv文件导入R(R是本地的;在我的Mac上)。
最好将文件导入到dataframe
中。我想仅从ftp服务器导入特定文件,而不是从所有文件导入(可以通过名称标识文件,例如,名称从“ test-file01”到“ test-file66”的所有csv文件)。
我当前的问题是我无法从FTP服务器将单个csv文件导入R。
我尝试过:
url = "ftp://xxxx.de/www_logs/testfolder/"
h = curl::new_handle(dirlistonly=TRUE, userpwd = "xxxx:yyyy")
h
con = curl::curl(url, "r", h)
con
tbl = read.table(con, stringsAsFactors=TRUE, fill=TRUE)
close(con)
head(tbl)
urls <- paste0(url, tbl[1:5,1]) # url
urls
fls = basename(urls) # path
fls
curl::curl_fetch_disk(urls[1], fls[1])
最后一次查询显示错误消息
error in curl::curl_fetch_disk(urls[1], fls[1]) : Access denied: 530
我也在帖子中尝试过 How to pass user and password in new_handle in curl R
userpwd <- "xxxx:yyyyy"
h <- curl::new_handle()
curl::handle_setopt(
handle = h,
# httpauth = 1,
userpwd = userpwd
)
resp <- curl::curl_fetch_disk("ftp://xxxxx.de/www_logs/testfolder/", "testdataframe.csv", handle = h)
不了解resp
是什么类型的对象?如何将其转移到dataframe
?
我也尝试过:
url <- "ftp://xxx.de/www_logs/testfolder/"
userpwd <- "xxxx:yyyy"
bin = getBinaryURL(url, userpwd = userpwd, verbose = TRUE,
ftp.use.epsv = TRUE)
load(rawConnection(bin))
最后一次查询会导致错误消息:
Error in load(rawConnection(bin)) :
the input does not start with the Magic Number, which is necessary for
loading from a connection