写一份PythonFTP案例,代码超过80行
时间: 2023-11-21 17:13:08 浏览: 85
好的,以下是一个稍微复杂一些的 Python FTP 案例,代码超过80行:
```python
import ftplib
import os
# FTP服务器的地址、用户名、密码
ftp_host = "ftp.example.com"
ftp_username = "username"
ftp_password = "password"
# 本地文件路径和FTP服务器上的路径
local_path = "/path/to/local/files"
ftp_path = "/path/to/ftp/files"
# 连接FTP服务器
ftp = ftplib.FTP(ftp_host)
ftp.login(ftp_username, ftp_password)
# 列出FTP服务器上的文件
ftp.cwd(ftp_path)
files = ftp.nlst()
print(f"FTP服务器 {ftp_host}:{ftp_path} 上的文件列表:")
for file in files:
print(file)
# 上传本地文件到FTP服务器
def ftp_upload_file(local_file_path, ftp_file_path):
filename = os.path.basename(local_file_path)
with open(local_file_path, "rb") as f:
ftp.storbinary(f"STOR {ftp_file_path}/{filename}", f)
# 上传整个文件夹到FTP服务器
def ftp_upload_folder(local_folder_path, ftp_folder_path):
for root, dirs, files in os.walk(local_folder_path):
for file in files:
local_file_path = os.path.join(root, file)
ftp_file_path = os.path.join(ftp_folder_path, os.path.relpath(local_file_path, local_folder_path))
ftp_upload_file(local_file_path, ftp_file_path)
# 下载FTP服务器上的文件到本地
def ftp_download_file(ftp_file_path, local_file_path):
with open(local_file_path, "wb") as f:
ftp.retrbinary(f"RETR {ftp_file_path}", f.write)
# 下载FTP服务器上的整个文件夹到本地
def ftp_download_folder(ftp_folder_path, local_folder_path):
os.makedirs(local_folder_path, exist_ok=True)
ftp.cwd(ftp_folder_path)
files = ftp.nlst()
for file in files:
ftp_file_path = os.path.join(ftp_folder_path, file)
local_file_path = os.path.join(local_folder_path, file)
if ftp.nlst(ftp_file_path):
ftp_download_folder(ftp_file_path, local_file_path)
else:
ftp_download_file(ftp_file_path, local_file_path)
# 删除FTP服务器上的文件或文件夹
def ftp_delete(ftp_path):
try:
ftp.cwd(ftp_path)
files = ftp.nlst()
for file in files:
ftp_delete(os.path.join(ftp_path, file))
ftp.cwd("..")
ftp.rmd(ftp_path)
except ftplib.all_errors:
ftp.delete(ftp_path)
# 执行上传、下载、删除操作
if __name__ == "__main__":
# 上传本地文件
local_file_path = os.path.join(local_path, "example.txt")
ftp_file_path = os.path.join(ftp_path, "example.txt")
ftp_upload_file(local_file_path, ftp_file_path)
# 上传整个文件夹
local_folder_path = os.path.join(local_path, "subfolder")
ftp_folder_path = os.path.join(ftp_path, "subfolder")
ftp_upload_folder(local_folder_path, ftp_folder_path)
# 下载FTP服务器上的文件
ftp_file_path = os.path.join(ftp_path, "example.txt")
local_file_path = os.path.join(local_path, "example_downloaded.txt")
ftp_download_file(ftp_file_path, local_file_path)
# 下载FTP服务器上的整个文件夹
ftp_folder_path = os.path.join(ftp_path, "subfolder")
local_folder_path = os.path.join(local_path, "subfolder_downloaded")
ftp_download_folder(ftp_folder_path, local_folder_path)
# 删除FTP服务器上的文件和文件夹
ftp_delete(ftp_file_path)
ftp_delete(ftp_folder_path)
# 关闭FTP连接
ftp.quit()
```
这个案例演示了如何连接到一个 FTP 服务器,列出服务器上的文件列表,上传文件和文件夹到服务器,从服务器下载文件和文件夹,删除服务器上的文件和文件夹,以及关闭 FTP 连接。注意,这个案例中的用户名、密码、FTP 服务器地址、本地文件路径和FTP服务器上的路径都是假的,请根据实际情况修改。
阅读全文
相关推荐


















