使用python

时间:2018-10-18 21:51:33

标签: sftp python-3.5

我正在使用此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

在我要完成的工作中,还有其他替代软件包更好吗?这是我的第一次尝试,因此不确定我走的路是否正确。

2 个答案:

答案 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的正确实施方式