繁体   English   中英

连接SFTP服务器时在python中进行多线程

[英]Multithreading in python while connecting SFTP server

我写了一个python脚本连接到SFTP服务器。 代码从文本文件获取其服务器凭据。 文本文件格式IP,USERNAME,PASSWORD IP2,USERNAME2,PASSWORD2 IP3,USERNAME3,PASSWORD3

现在,此代码的问题是,如果PASSWORD2错误,那么它将引发身份验证错误,这是可以理解的,但是由于该错误,循环中断并且进程停止,并且它不处理文本文件的第3行。 多线程可以解决问题,就好像在多线程中,如果1个线程失败,其余部分可以继续运行。

但是我不知道python中的多线程。请帮助我将这段代码修改为多线程。

import os
import pysftp
import csv
import socket
from stat import S_IMODE, S_ISDIR, S_ISREG
import time
from threading import Thread
from time import sleep
import os.path
import shutil
import fileinput
import lock

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

try:
    with open("text.txt", "r") as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=',')
        for row in csv_reader:
            print(row)
            IP=row[0]
            myUsername=row[1]
            myPassword=row[2]
            txtfile=row[3]
            remotepath=row[4]
            localpath=row[5]
            print(IP)
            print(myUsername)
            print(myPassword)
            print(txtfile)
            print(remotepath)
            print(localpath)

            with pysftp.Connection(host=IP, username=myUsername, password=myPassword, cnopts=cnopts) as sftp:
                r = str(socket.gethostbyaddr(IP))
                print("connection successful with " + r)
except:
    print("failed")

您的要求不需要多线程。

您要做的就是将with块放入try catch中

for row in csv_reader
 ...
    try:        
       with pysftp.Connection(host=IP, username=myUsername, password=myPassword, 
         cnopts=cnopts) as sftp:

         <your logic>
    except pysftp.SSHException:
       print("Failed to connect")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM