我有此功能,该功能返回我需要读取的文件的路径
def specie_to_file(specie):
switcher = {
'human': 'sftp://eliran@SERVER/PATH/TO/FILE1',
'mouse': 'sftp://eliran@SERVER/PATH/TO/FILE2'
}
return switcher.get(specie, None)
稍后,我正在尝试打开文件
database = pd.read_csv(db_file, sep='\t')
db_file
拥有上述路径之一。
执行脚本时出现此错误:
Traceback (most recent call last):
.
.
.
File "gene_converter.py", line 111, in converter
database = pd.read_csv(open(db_file), sep='\t')
FileNotFoundError: [Errno 2] No such file or directory: 'sftp://eliran@SERVER/PATH/TO/FILE1'
我已经检查了文件名以及它们都存在且位于正确位置的路径。
我尝试了以下操作并获得了相同的追溯:
database = pd.read_csv(Path(db_file), sep='\t')
database = pd.read_csv(open(db_file,'r'), sep='\t')
database = pd.read_csv(open(db_file,'r').read(), sep='\t')
答案 0 :(得分:2)
您的文件位于FTP服务器上。
使用paramiko进行阅读。
with sftp.open("sftp://eliran@SERVER/PATH/TO/FILE1") as f:
pd.read_csv(f)
答案 1 :(得分:1)
根据文档:
“ filepath_or_bufferstr,路径对象或类似文件的对象 任何有效的字符串路径都是可以接受的。该字符串可以是URL。有效的URL方案包括http,ftp,s3,gs和file。对于文件URL,需要一个主机。本地文件可以是:file://localhost/path/to/table.csv。
如果要传递路径对象,pandas会接受任何os.PathLike。
通过类似文件的对象,我们使用read()方法引用对象,例如文件处理程序(例如,通过内置的open函数)或StringIO。”
SFTP未显示在受支持的URL方案列表中。因此,您应该从URL构建一个StringIO对象,并将其传递给read_csv。
安装SFTP库。下载文件,然后阅读。 http://docs.paramiko.org/en/stable/api/sftp.html