相关疑难解决方法(0)

Python中的SFTP?(独立于平台)

我正在研究一种简单的工具,它将文件传输到硬编码的位置,密码也是硬编码的.我是一个python新手,但多亏了ftplib,很简单:

import ftplib

info= ('someuser', 'password')    #hard-coded

def putfile(file, site, dir, user=(), verbose=True):
    """
    upload a file by ftp to a site/directory
    login hard-coded, binary transfer
    """
    if verbose: print 'Uploading', file
    local = open(file, 'rb')    
    remote = ftplib.FTP(site)   
    remote.login(*user)         
    remote.cwd(dir)
    remote.storbinary('STOR ' + file, local, 1024)
    remote.quit()
    local.close()
    if verbose: print 'Upload done.'

if __name__ == '__main__':
    site = 'somewhere.com'            #hard-coded
    dir = './uploads/'                #hard-coded
    import sys, getpass
    putfile(sys.argv[1], site, dir, user=info)
Run Code Online (Sandbox Code Playgroud)

问题是我找不到任何支持sFTP的库.安全地做这样的事情的正常方法是什么?

编辑:感谢这里的答案,我已经让它与Paramiko合作,这就是语法.

import paramiko

host = "THEHOST.com" …
Run Code Online (Sandbox Code Playgroud)

python sftp

168
推荐指数
6
解决办法
16万
查看次数

使用pysftp下载文件

我正在尝试加载(并直接保存在本地).csv存储在FTP服务器(SFTP协议)上的文件.我正在将Python与pysftp库结合使用.当我检查文件是否存在时,它返回TRUE.但是在尝试加载文件时,无论我尝试什么,它似乎都是空的.

如何将文件存入(并存储)到我的本地环境?我想念一些明显的东西吗?

import pysftp

cnopts = pysftp.CnOpts()
cnopts.hostkeys = None

# Make connection to sFTP
with pysftp.Connection(hostname,
                       username=sftp_username,
                       password=sftp_pw,
                       cnopts = cnopts
                       ) as sftp:
    sftp.isfile('directory/file.csv')) ## TRUE
    file = sftp.get('directory/file.csv')
    print(file) ## None

sftp.close()
Run Code Online (Sandbox Code Playgroud)

python sftp pysftp

8
推荐指数
1
解决办法
2万
查看次数

读取用 Python Paramiko SFTPClient.open 方法打开的文件很慢

我正在尝试远程读取 netcdf 文件。
我使用 Paramiko 包来读取我的文件,如下所示:

import paramiko
from netCDF4 import Dataset

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=’hostname’, username=’usrname’, password=’mypassword’)

sftp_client = client.open_sftp()
ncfile = sftp_client.open('mynetCDFfile')
b_ncfile = ncfile.read()    # ****

nc = Dataset('test.nc', memory=b_ncfile)
Run Code Online (Sandbox Code Playgroud)

但是运行速度ncfile.read()非常慢。

所以我的问题是:有没有其他方法可以远程读取 netcdf 文件,或者有什么方法可以加快速度paramiko.sftp_file.SFTPFile.read()

python ssh sftp paramiko netcdf

4
推荐指数
1
解决办法
4862
查看次数

标签 统计

python ×3

sftp ×3

netcdf ×1

paramiko ×1

pysftp ×1

ssh ×1