Загрузка файла SFTP с использованием Python - PullRequest
0 голосов
/ 19 октября 2018

Я использую код из этой ссылки , чтобы использовать 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 голосов
/ 05 ноября 2018

Вы даете имя аргумента значение очень неправильно.Представьте, что вы вызываете исполняемый файл с такими же аргументами, как вы назвали, просто представьте,

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: значение по умолчанию или указанное значение для правильной реализации

0 голосов
/ 29 октября 2018

Я кратко ищу README.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
...