如何在 Python 中使用 FTP?
在 Python 中,我们可以通过导入 **ftplib** 模块来使用 **FTP**(文件传输协议),它提供了一个简单的接口来访问 FTP 服务器,以便检索文件并在本地处理它们。**ftplib** 模块允许我们编写执行各种自动化 FTP 任务的 Python 程序。
FTP 的目标
FTP 的目标如下:
- FTP 提供文件共享。
- FTP 帮助我们鼓励使用远程计算机。
- FTP 用于可靠且高效地传输数据。
以下是一些我们可以使用 Python 中的 **'ftplib'** 模块执行的常见 FTP 任务:
- 连接到 FTP 服务器
- 下载文件
- 上传文件
- 打印文件列表
连接到 FTP 服务器
以下将连接到远程服务器,然后我们可以将其更改为特定目录。
from ftplib import FTP #domain name or server ip: ftp = FTP('123.server.ip') ftp.login(user='username', passwd = 'password'
在执行上述程序以连接 FTP 服务器时,如果连接成功,则会显示 **“登录成功。”**
'230 Login successful.'
如果连接失败,由于用户名或密码错误,则会显示 **“登录错误。”**
'530 Login incorrect.'
下载文件
首先,我们必须将文件名分配给一个变量,并使用 open() 方法打开我们的本地文件。除了文件名外,您还需要传递表示所需模式的字符串。在我们的场景中,我们需要下载的文件是二进制文件,因此模式将为 **wb**。
接下来,我们必须从远程服务器检索以二进制格式存在的数据,然后我们将找到的内容写入本地文件。最后一个参数 (1024) 充当缓冲的参考。
from ftplib import FTP def download_file(): # Establish FTP connection ftp = FTP('ftp.example.com') ftp.login('username', 'password') # Define the file to be downloaded file_name = 'example.txt' # Open a local file in write-binary mode with open(file_name, 'wb') as local_file: # Download the file from the FTP server ftp.retrbinary('RETR ' + file_name, local_file.write, 1024) # Quit the FTP connection ftp.quit() print(f"{file_name} downloaded successfully!") # Call the function download_file()
以下是上述代码的输出:
example.txt downloaded successfully!
上传文件
与下载文件相同,这里我们将文件名分配给一个变量,然后将二进制数据存储到文件名中,其中包含来自本地文件名的文件数据。
def upload_file(): file_name = 'exampleFile.txt' ftp.storbinary('STOR ' + file_name, open(file_name, 'rb')) ftp.quit() upload_file()
打印文件列表
以下示例代码将连接到 FTP 服务器并打印该服务器主目录中的文件列表。
import ftplib # Connect to the FTP server ftp_connection = ftplib.FTP('ftp.server.com', 'username', '@email.address') # Printing file list print("File List:") file_list = ftp_connection.dir() print(file_list) # Change working directory to /tmp ftp_connection.cwd("/tmp")
以下是上述代码的输出:
File List: -rw-r--r-- 1 owner group 12345 Sep 11 12:00 file1.txt -rw-r--r-- 1 owner group 67890 Sep 10 15:30 file2.zip
广告