R导入 - 来自受密码保护的URL的CSV文件 - 在.BAT文件中

时间:2013-11-04 19:45:58

标签: r url batch-file csv passwords

好的 - 所以这就是我想要做的。

我有这个受密码保护的CSV文件我正试图导入R.

我可以使用以下方法将其导入:

  

read.csv()

当我在RStudio中运行我的代码时,一切都很完美。

但是,当我尝试使用批处理文件(windows .bat)运行我的.R文件时,它不起作用。我想使用.BAT文件,这样我就可以设置一个计划任务来每天早上运行我的代码。

这是我的.BAT文件:

  

“E:\ R-3.0.2 \ bin \ x64 \ R.exe”CMD BATCH“E:\ Control Files \ download_data.R”“E:\ Control Files \ DailyEmail.txt”

这是我的.R文件:

  

url< - “http://username:password@www.url.csv

     

data< - read.csv(url,skip = 1)

**请注意,我已将我的用户名/密码以及CSV的确切位置放在我的代码中。我在这里使用了通用的东西,因为这是与工作相关的,并且发布用户名和密码可能不受欢迎。

正如我所说,当我在RStudio中使用它时,这段代码工作正常。但是当我使用.BAT文件时失败了。

我收到以下错误消息:

  

download.file中的错误(url,“E:/data/data.csv”):     无法打开网址“ websiteurl ”   另外:警告信息:   在download.file(url,“E:/data/data.csv”)中:     无法解析'用户名'   执行暂停

**上面的weburl是上面的http(我无法发布链接) 显然,.BAT的用户名/密码有问题?有什么想法吗?

*编辑*

我在Linux上尝试过这么多。想想也许窗户正在玩傻鬼。

只是从终端,我运行Rscript -e“download_data.r”并获得与我在Windows中相同的错误消息。所以我怀疑这可能是我获取数据的地方的问题?提供程序是否可以阻止来自命令行的数据,但不能阻止来自Rstudio的数据?

2 个答案:

答案 0 :(得分:0)

我遇到了与文件权限有关的类似问题。 .bat文件不一定具有与直接从Rstudio运行代码相同的权限。尝试在.bat文件中使用rscript(http://stat.ethz.ch/R-manual/R-devel/library/utils/html/Rscript.html),如

Rscript“E:\ Control Files \ download_data.R”

参数“E:\ Control Files \ DailyEmail.txt”的目的是什么?该程序是否以任何方式使用它?

答案 1 :(得分:0)

所以,我找到了一个解决方案,这对大多数人来说可能不是最实用的,但对我有用。

我所做的是将我的项目迁移到Linux系统。无论如何,在Linux上运行日常脚本更容易。

该解决方案利用了linux中的“wget”功能。

您可以在shell脚本中运行wget,也可以使用R中的system()函数来运行wget。

代码如下:

  

wget -O /home/user/.../file.csv --user = userid --password ='password'http://www.url.com/file.csv

你可以这样做:

  

syscomand> - “wget -O /home/.../file.csv --user = userid --password ='password'http://www.url.com/file.csv

     

system(syscommand)

在R中

将CSV下载到硬盘驱动器上的某个位置,然后使用read.csv()

抓取CSV

这样做可以让我更深入地了解问题的根本原因。在系统(syscommand)运行时,我得到以下输出:

  

连接到www.website.com(www.website.com)| ip.ad.re.ss |:80 ...已连接。

     

发送HTTP请求,等待响应...... 401未经授权

     

重用现有的连接到www.weburl.com:80。

     

发送HTTP请求,等待响应... 200 OK

不确定为什么必须两次发送请求?为什么我第一次尝试401 Unauthorized?