]我正在使用 paramiko 将文件从一台机器传输到另一台机器。但我想在文件夹中传输连续文件,直到文件结束..... 文件名的方式是 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')
you can see I have files in :b/
but its output is
no txt file found
no txt file found
no txt file found
[1]: https://i.stack.imgur.com/T0Nud.png
[2]: https://i.stack.imgur.com/SwmeS.png
您的代码从不读取本地目录。您的for
循环迭代字符串中的'/home/netcs/b/'
字符,而不是文件/home/netcs/b/
夹中的文件。
要列出文件夹中的文件,请使用os.listdir
:
如何列出目录中的所有文件?
也os.listdir
仅返回文件名,因此您必须将它们与source
调用SFTPClient.put
.
同样,remotepath
参数SFTPClient.put
也必须是完整的文件路径。
你不想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()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句