我正在遍历.din文件列表。我正在尝试打开文件并循环浏览每一行,但似乎当我获取文件时,它们只是作为字符串而不是对象进入。
我希望能够打开我想要的文件,但是我使用pystfp的经验非常有限。任何帮助都会大有帮助。谢谢。
def find_ftp(username, password, cnopts, fileTitle, host):
host = host
with pysftp.Connection(host, username=username, password=password,
cnopts=cnopts) as sftp:
filelist = sftp.listdir('/output')
for filename in filelist:
print(filename)
if filename == fileTitle:
with open(filename) as f:
content = f.readlines()
print("success")
else:
print("failure")
答案 0 :(得分:0)
脚本中的错误是您正在使用内置函数'open()',这意味着您试图在本地而不是在主机上远程打开路径。而是使用pysftp.connection.open()在与之建立连接的远程主机上打开文件。
在您的代码中,您的“ pysftp.connection”对象称为“ sftp”。注意我如何用sftp.open()替换'open()'
def find_ftp(username, password, cnopts, fileTitle, host):
host = host
with pysftp.Connection(host, username=username, password=password,
cnopts=cnopts) as sftp:
filelist = sftp.listdir('/output')
for filename in filelist:
print(filename)
if filename == fileTitle:
with sftp.open(filename) as f:
# Data from SSH is binary, we need to decode to string
content = [line.decode("utf-8") for line in f.readlines()]
print("success")
else:
print("failure")
有关SFTP.connection.open函数的一些信息: https://paramiko-docs.readthedocs.io/en/latest/api/sftp.html?highlight=open#paramiko.sftp_client.SFTPClient.open (链接自https://pysftp.readthedocs.io/en/release_0.2.8/pysftp.html)