網路程式設計必備:Python中Paramiko和FTP的資料夾與檔案檢測技巧

木头左發表於2024-07-21

哈嘍,大家好,我是木頭左!

Paramiko是一個用於進行SSH連線的Python庫,它支援以加密的形式進行遠端命令執行、檔案傳輸等操作。 另一方面,FTP即檔案傳輸協議,用於在網路上進行檔案的傳輸。Python中的ftplib模組允許實現FTP客戶端的功能,包括列出目錄內容、上傳和下載檔案等。

檢查資料夾是否存在

使用Paramiko檢查遠端資料夾

要檢查遠端伺服器上的資料夾是否存在,你可以使用Paramiko庫來執行ls命令並捕獲結果。

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname', username='user', password='pass')

folder_path = '/path/to/directory'
stdin, stdout, stderr = ssh.exec_command(f'ls {folder_path}')

if not stderr.read():
    print(f"Folder {folder_path} exists.")
else:
    print(f"Folder {folder_path} does not exist.")

ssh.close()

使用FTP檢查資料夾

在使用FTP時,可以使用cwd方法嘗試切換到目標目錄來確定資料夾是否存在。

from ftplib import FTP

ftp = FTP('hostname')
ftp.login(user='username', passwd='password')

folder_path = '/path/to/directory'
try:
    ftp.cwd(folder_path)
    print(f"Folder {folder_path} exists.")
except Exception as e:
    print(f"Folder {folder_path} does not exist.")

ftp.quit()

第檢查檔案是否存在

使用Paramiko檢查遠端檔案

對於Paramiko,可以利用os.path模組配合SSH會話來確認檔案是否存在。

import os
import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname', username='user', password='pass')

file_path = '/path/to/file'
stdin, stdout, stderr = ssh.exec_command(f'test -e {file_path} && echo "File exists" || echo "File does not exist"')

output = stdout.read().decode()
if "File exists" in output:
    print(f"File {file_path} exists.")
else:
    print(f"File {file_path} does not exist.")

ssh.close()

使用FTP檢查檔案

在使用FTP時,可以簡單地使用sendcmd方法配合LIST命令來檢查檔案是否存在。

from ftplib import FTP

ftp = FTP('hostname')
ftp.login(user='username', passwd='password')

file_name = 'filename.txt'
resp = []
ftp.retrlines('LIST', file_name, resp.append)
if any(file_name in line for line in resp):
    print(f"File {file_name} exists.")
else:
    print(f"File {file_name} does not exist.")

ftp.quit()

透過這些程式碼片段,你可以輕鬆地在Python中使用ParamikoFTP來檢查遠端伺服器上的資料夾和檔案是否存在,從而更好地管理和操作網路上的檔案資源。記住,這些只是基礎示例,實際應用中可能需要進一步的錯誤處理和邏輯最佳化。

我是木頭左,感謝各位童鞋的點贊、收藏,我們下期更精彩!

相關文章