我一直在尝试使用paramiko连接到远程计算机,此操作已成功完成,一旦完成,我将尝试导航到特定路径并使用特定的命名法将文件压缩。
为此,我尝试了sftp并导航到该文件夹,然后使用re.match对数据进行了排序。
现在,尝试压缩所需的文件,出现以下错误
对于z中的文件名:
TypeError:“ NoneType”对象不可迭代
尝试过ssh.exec_command(“ commands”),不适用于“ cd”,给了我一个空列表。 如果可行,我可以使用其他Linux命令通过此功能执行。 使用sftp导航到文件系统。 引用以下链接相同的问题,但没有经过验证的答案: How do I change directories using Paramiko? How do I change directories using Paramiko?
import os
import sys
import shutil
import zipfile
import paramiko
import re
import subprocess
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
hostname = "Let It Be Some IP"
username = "Some UserName"
password = "SomePwd"
ssh.connect(hostname=hostname,username=username,password=password)
print("Connected: " , hostname)
#To Execute Commands into Linux Host Machine
ftp = ssh.open_sftp()
#Get the required Directory For Operation
change_dir = ftp.chdir("/home/MyFolder")#Changes the Directory
new_dir = ftp.getcwd()#Gets Current working Directory
list_contents = ftp.listdir("/home/MyFolder")
print(list_contents)
#Using RE to get the Filename
for elements in list_contents:
z = re.match("(new-\d)",elements)
zf = zipfile.ZipFile('files.zip', mode='w')
for file_names in z:
zf.write(file_names)
预期的O / P:应压缩以new-开头的/ home / MyFolder文件 错误:对于z中的file_names: TypeError:“ NoneType”对象不可迭代