我正在使用此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
在我要完成的工作中,还有其他替代软件包更好吗?这是我的第一次尝试,因此不确定我走的路是否正确。
答案 0 :(得分:1)
我简短地查找了自述文件。 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
答案 1 :(得分: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的正确实施方式