QFTP 创建多级目录,传入一个本地路径,一个ftp路径,若ftp路径不存在则需要在ftp创建此目录
时间: 2023-06-12 09:08:07 浏览: 122
可以使用 Python 的 ftplib 库来创建多级目录并传输文件。下面是一个示例代码,可以实现上传本地文件到 FTP 服务器,并创建多级目录:
```python
import os
from ftplib import FTP
def upload_file(ftp, local_path, ftp_path):
# 如果 FTP 目录不存在,则创建目录
if not ftp_path in ftp.nlst():
ftp.mkd(ftp_path)
ftp.cwd(ftp_path)
with open(local_path, 'rb') as f:
ftp.storbinary('STOR ' + os.path.basename(local_path), f)
def upload_dir(ftp, local_path, ftp_path):
# 如果 FTP 目录不存在,则创建目录
if not ftp_path in ftp.nlst():
ftp.mkd(ftp_path)
ftp.cwd(ftp_path)
for file_name in os.listdir(local_path):
local_file_path = os.path.join(local_path, file_name)
if os.path.isfile(local_file_path):
with open(local_file_path, 'rb') as f:
ftp.storbinary('STOR ' + file_name, f)
elif os.path.isdir(local_file_path):
upload_dir(ftp, local_file_path, file_name)
ftp.cwd("..")
def main():
ftp = FTP('ftp.example.com')
ftp.login(user='username', passwd='password')
local_path = '/path/to/local/folder'
ftp_path = '/path/to/ftp/folder'
# 根据本地路径选择上传方式
if os.path.isfile(local_path):
upload_file(ftp, local_path, ftp_path)
elif os.path.isdir(local_path):
upload_dir(ftp, local_path, ftp_path)
ftp.quit()
if __name__ == '__main__':
main()
```
在本地路径为文件时,调用 `upload_file` 函数上传文件;在本地路径为目录时,调用 `upload_dir` 函数上传整个目录。
在上传时,如果 FTP 目录不存在,则会调用 `ftp.mkd` 函数创建目录。
阅读全文