Upload all files from local folder with specific extension to SFTP server using Paramiko(使用Paramiko将本地文件夹中具有特定扩展名的所有文件上载到SFTP服务器)
问题描述
我正在使用pariko将文件上传到SFTP服务器。我想传输文件夹中的所有文件。文件名的格式为one.txt
,two.txt
...。我希望按如下顺序发送文件:one.txt
然后two.txt
然后three.txt
.....下面用于传输一个文件的代码运行良好,但我尝试传输所有文件的最后一个代码不起作用...
import paramiko
source = r'/home/netcs/b/one.txt'
dest = r'/home/tein/c/pickle.txt'
hostname = '10.10.10.9'
port = 22 # default port for SSH
username = 'tein'
password = 'po'
try:
t = paramiko.Transport((hostname, port))
t.connect(username=username, password=password)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(source, dest)
finally:
t.close()
传输所有文件(不工作):
import paramiko
source = r'/home/netcs/b/'
dest = r'/home/tein/c/'
hostname = '10.10.10.9'
port = 22 # default port for SSH
username = 'tein'
password = 'po'
for file in source:
if file.endswith('.txt'):
try:
t = paramiko.Transport((hostname, port))
t.connect(username=username, password=password)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(source, dest)
finally:
t.close()
break
else:
print('No txt file found')
我在b/
中有文件:
但脚本的输出为:
no txt file found
no txt file found
no txt file found
推荐答案
您的代码从不读取本地目录。您的for
循环迭代'/home/netcs/b/'
字符串中的字符,而不是/home/netcs/b/
文件夹中的文件。
要列出文件夹中的文件,请使用
os.listdir
:
How do I list all files of a directory?os.listdir
也只返回文件名,因此在调用SFTPClient.put
时必须将它们与source
结合使用。同样,
SFTPClient.put
的remotepath
参数也必须是完整文件路径。您不希望在找到第一个文件后
break
另一个问题是
print('No txt file found')
放错了位置。您将为每个没有.txt
扩展名的文件打印该命令。
files = os.listdir(source)
for file in files:
if file.endswith('.txt'):
try:
t = paramiko.Transport((hostname, port))
t.connect(username=username, password=password)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(os.path.join(source, file), dest + "/" + file)
finally:
t.close()
有关递归上传,请参阅:
Python pysftp put_r does not work on Windows
这篇关于使用Paramiko将本地文件夹中具有特定扩展名的所有文件上载到SFTP服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用Paramiko将本地文件夹中具有特定扩展名的所有
基础教程推荐
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 筛选NumPy数组 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01