gpt4 book ai didi

使用R读取以 "smb://"开头的远程文件

转载 作者:行者123 更新时间:2023-12-02 19:48:09 27 4
gpt4 key购买 nike

要读取 R 中的文件,我通常会执行如下操作:

read.csv('/Users/myusername/myfilename.csv')

但是,我正在尝试读取位于远程服务器(Windows SMB/CIFS 共享)上的文件,我可以通过 Finder 在 Mac 上访问该文件 → Go连接到服务器菜单项。

当我查看该文件的属性时,文件路径与我习惯的不同。它不是以 /Users/myusername/... 开头,而是 smb://server.msu.edu/.../myfilename.csv

尝试读取该文件,我尝试了以下操作:

read.csv('smb://server.msu.edu/.../myfilename.csv')

但是,这不起作用。

返回的不是通常的“没有这样的文件或目录”错误:

smb://server.msu.edu/.../myfilename.csv does not exist in current working directory

我想文件路径需要不同的格式,但我不知道是什么。

如何在R中读取这种类型的文件?

最佳答案

说明

smb://educ-srvmedia1.campusad.msu.edu/... 实际上是一个 URL,而不是文件路径。

让我们来分解一下

smb:// 表示使用server message block protocol (文件共享)

educ-srvmedia1.campusad.msu.edu 是服务器的名称

/.../myfilename.csv 是远程服务器上的文件共享/路径

您可以使用 OSX 上的 Finder 导航到此目录,因为它内置了对 SMB 协议(protocol)的支持。 Finder 使用 URL 连接到远程服务并允许您浏览文件。

但是,R 不了解 SMB 协议(protocol),因此无法正确解释文件路径。

R 函数 read.csv() 在内部使用 file(),请参阅 https://stat.ethz.ch/R-manual/R-devel/library/base/html/connections.html

url and file support URL schemes file://, http://, https:// and ftp://

因此 R 返回“无法定位文件”消息,因为协议(protocol)不受支持而无法找到文件。是的,有点令人困惑。

修复

您需要将文件共享挂载到本地文件系统上。

这意味着 SMB 协议(protocol)的详细信息将由操作系统在幕后处理,文件共享将作为本地目录呈现。

这将允许 R(和其他程序)出于所有意图和目的处理远程文件,就像任何其他本地文件一样。 This discussion显示了一些这样做的选项。

例如

# need to create /LocalFolder first
mount -t cifs //username:password@hostname/sharename /LocalFolder

然后在 R 中:

read.csv('/LocalFolder/myfilename.csv')

额外

Windows 用户可以使用 UNC 路径更轻松地完成此操作
How to read files from a UNC-specified directory in R?

关于使用R读取以 "smb://"开头的远程文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42074978/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com