这里有一个关于 stfp 如何运作的问题。当我连接到 SFTP 并下载文件时,我很想了解“幕后”到底发生了什么。
我一直在使用一些连接到 sftp 服务器的继承代码,并列出一个目录:例如
sftp = pysftp.Connection(host='xxxxx', username='xxxx', password='xxxxx', cnopts=cnopts)
sftp.cwd('/some_dir')
server_files = sftp.listdir()
从那里,假设我想读server_files[1]
入一个pandas
数据框:
我不能简单地尝试读取我想要的文件,即
pd.read_csv(server_files[1])
# FileNotFoundError: [Errno 2] No such file or directory:
反而; 我必须首先get
像下面这样的文件。
sftp.get(server_files[1])
pd.read_csv(server_files[1])
# Success!
这很好用。那里没有问题。但是,我的问题是:
server_files[1]
对象“存储”在工作记忆的什么地方?我type(server_file[1])
在操作之前和之后都执行了get
,两个结果都是str
,向我表明对象本身没有改变。所以我真的不明白该文件的数据保存在哪里。为什么我不需要做类似的事情my file = sftp.get(server_file[1])
?它如何仅对文件的“名称”起作用?
我很欣赏这不是如何使代码工作的问题,而是它如何运行的问题,但尽管如此,我还是希望能在理解这一点上有所帮助。
干杯
约翰