簡體   English   中英

從遠程服務器讀取 TSV 文件

[英]Read a TSV file from a remote server

我有這個 function 它返回我需要讀取的文件的路徑

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')

您的文件位於 FTP 服務器上。

使用paramiko來閱讀它。

with sftp.open("sftp://eliran@SERVER/PATH/TO/FILE1") as f:
    pd.read_csv(f)

根據文檔:

"filepath_or_bufferstr, path object or file-like object Any valid string path is acceptable. The string could be a URL. Valid URL schemes include http, ftp, s3, gs, and file. For file URLs, a host is expected. A local文件可以是:file://localhost/path/to/table.csv。

如果要傳入路徑 object,pandas 接受任何 os.PathLike。

通過類似文件的 object,我們指的是具有 read() 方法的對象,例如文件處理程序(例如通過內置的打開函數)或 StringIO。”

SFTP 未顯示在受支持的 URL 方案列表中。 因此,您應該從 URL 中構建一個 StringIO object 並將其傳遞給 read_csv。

安裝 SFTP 庫。 下載文件,然后閱讀。 http://docs.paramiko.org/en/stable/api/sftp.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM