使用 python 上传 SFTP 文件
Posted
技术标签:
【中文标题】使用 python 上传 SFTP 文件【英文标题】:SFTP file upload using python 【发布时间】:2019-03-23 19:12:25 【问题描述】:我正在使用此link 中的代码使用python 将xlsx
文件上传到SFTP
服务器。
我修改了parse_args()
方法如下:
def parse_args():
parser = argparse.ArgumentParser(
"Uploads CSV files to TrustYou's sftp server",
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument(
'ftpclients.myserver.com', type=str,
help="The name of the sftp server, (eg: sftp.trustyou.com)")
parser.add_argument(
'Mike', type=str,
help="The name of the user, (eg: hotel-california)")
parser.add_argument(
r'C:\Users\Mike\Desktop\uploader\testUpload.xlsx', type=str,
help="The name of the CSV file, (eg: datafile.csv)")
parser.add_argument(
r'C:\Users\Mike\Desktop\uploader\securityKey.ppk', type=str,
help="The path to the private key file, (eg: ~/.ssh/id_rsa)")
return parser.parse_args()
但是,我收到以下错误:
Uploads CSV files to TrustYou's sftp server: error: the following arguments are required: ftpclients.myserver.com, securityKey, C:\Users\Mike\Desktop\uploader\testUpload.xlsx, C:\Users\Mike\Desktop\uploader\securityKey.ppk
在我想要完成的工作中,还有其他替代方案更好吗?这是我第一次尝试,所以不确定我是否走在正确的道路上。
【问题讨论】:
【参考方案1】:您给参数名称一个非常错误的值。想象一下用你命名的参数调用可执行文件只是想象
upload_data.py "--C:\Users\Mike\Desktop\uploader\testUpload.xlsx=filename you need to pass"
正确的调用方式如下代码所示
parser.add_argument(
'--datafile', type=str,
help="The name of the CSV file, (eg: datafile.csv)")
然后在命令行上运行它,如下所示
yourscript.py --datafile="C:\Users\Mike\Desktop\uploader\testUpload.xlsx"
如果你想给出默认值,那么你可以检查Python argparse: default value or specified value 是否正确实现
【讨论】:
【参考方案2】:我简要地查找了自述文件。 https://github.com/trustyou/example-connect-sftp/blob/master/README.md
您不需要更改 python parse_args 方法。
用法
$ python upload_data.py sftp.example.com superman /home/superman/data.csv/ /home/superman/.ssh/id_rsa
如果必须更改源代码,请替换参数。
...
if __name__ == '__main__':
args = parse_args()
sftp_upload(args.servername, args.username, args.datafile, args.privatekey) # change params here
【讨论】:
以上是关于使用 python 上传 SFTP 文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 ppk 文件上传 Paramiko sftp [重复]
如何在Python中将所有文件从Windows文件夹上传到SFTP文件夹