Python实现FTP上传文件或文件夹实例(递归)
1. 确保FTP库已经安装
在使用Python实现FTP上传文件或文件夹之前,需要先确保Python已经安装FTP库。可以在命令行终端中使用以下命令安装FTP库:
pip install ftplib
2. 实现FTP上传文件
下面是一个简单的FTP上传文件的示例:
import ftplib
def ftp_upload_file(hostname, username, password, filename, remote_path):
with ftplib.FTP(hostname, username, password) as ftp:
ftp.cwd(remote_path)
with open(filename, "rb") as f:
ftp.storbinary("STOR " + filename, f)
ftp.quit()
if __name__ == "__main__":
ftp_upload_file("ftp.example.com", "username", "password", "example.txt", "/remote/path")
在上面的代码中,ftp_upload_file()
函数接受主机名、用户名、密码、文件名和远程路径作为参数,并使用Python的ftplib
库实现上传文件的功能。
3. 实现FTP上传文件夹
如果需要上传文件夹,可以使用递归函数实现。以下是一个实现FTP上传文件夹的示例:
import os
import ftplib
def ftp_upload_dir(hostname, username, password, local_dir, remote_path):
with ftplib.FTP(hostname, username, password) as ftp:
ftp.cwd(remote_path)
for filename in os.listdir(local_dir):
local_path = os.path.join(local_dir, filename)
if os.path.isfile(local_path):
with open(local_path, "rb") as f:
ftp.storbinary("STOR " + filename, f)
elif os.path.isdir(local_path):
try:
ftp.mkd(filename)
except ftplib.error_perm as e:
# Ignore "directory already exists" error
if not e.args[0].startswith("550"):
raise
ftp.cwd(filename)
ftp_upload_dir(hostname, username, password, local_path, ".")
ftp.cwd("..")
ftp.quit()
if __name__ == "__main__":
ftp_upload_dir("ftp.example.com", "username", "password", "/path/to/local/dir", "/remote/path")
在上面的代码中,ftp_upload_dir()
函数接受主机名、用户名、密码、本地目录和远程路径作为参数,并使用Python的os
和ftplib
库实现递归上传文件夹的功能。
4. 示例说明
示例1:上传单个文件
if __name__ == "__main__":
ftp_upload_file("ftp.example.com", "username", "password", "example.txt", "/remote/path")
在上面的示例中,上传了名为example.txt
的文件到FTP服务器的/remote/path
目录下。
示例2:上传文件夹
if __name__ == "__main__":
ftp_upload_dir("ftp.example.com", "username", "password", "/path/to/local/dir", "/remote/path")
在上面的示例中,上传了本地目录/path/to/local/dir
中的所有文件和文件夹(包括子文件夹)到FTP服务器的/remote/path
目录下。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现FTP上传文件或文件夹实例(递归) - Python技术站