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将本地文件夹中具有特定扩展名的所有
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01