ftp如果路径不存在,你需要先创建路径,再创建目录的代码
时间: 2023-12-11 17:05:37 浏览: 15
你可以使用 `ftp.cwd()` 方法切换到指定的目录,然后使用 `ftp.mkd()` 方法创建目录。如果目录不存在,则需要先创建路径,再创建目录。以下是一个示例代码:
```
import ftplib
ftp = ftplib.FTP('ftp.example.com')
ftp.login('username', 'password')
# 切换到指定的目录
ftp.cwd('/path/to/parent/directory')
# 检查目录是否存在,如果不存在则创建
dirs = ['path', 'to', 'new', 'directory']
for directory in dirs:
try:
ftp.cwd(directory)
except:
ftp.mkd(directory)
ftp.cwd(directory)
# 创建目录
ftp.mkd('new_directory')
ftp.quit()
```
这个示例代码将会尝试切换到 `/path/to/parent/directory/path/to/new/directory` 目录,如果目录不存在,则会依次创建这些目录。最后,它将在 `/path/to/parent/directory/path/to/new/directory/` 目录下创建一个名为 `new_directory` 的目录。
相关问题
ftp如果路径不存在,怎么先创建路径,再创建目录
在 FTP 中,创建目录的方法是 `ftp.mkd(directory)`,如果目录不存在,则会报错。如果要先创建路径,再创建目录,可以使用以下代码:
```
import ftplib
def mkdir_p(ftp, path):
"""递归创建 FTP 目录"""
dirs = path.split("/")
for dir in dirs:
if dir not in ftp.nlst():
ftp.mkd(dir)
ftp.cwd(dir)
# 连接 FTP
ftp = ftplib.FTP('ftp.example.com')
ftp.login('username', 'password')
# 创建目录
path = "/path/to/new/directory"
try:
ftp.cwd(path) # 切换到目录,如果目录存在,则不会报错
except ftplib.error_perm:
mkdir_p(ftp, path) # 目录不存在,则递归创建路径和目录
# 关闭连接
ftp.quit()
```
上述代码中,我们定义了一个递归函数 `mkdir_p()`,可以递归创建 FTP 目录。然后,我们先尝试切换到目录,如果目录不存在,则调用 `mkdir_p()` 函数创建路径和目录。如果目录已经存在,则不会报错,可以直接创建目录。
QFTP 创建多级目录,传入一个本地路径,一个ftp路径,若ftp路径不存在则需要在ftp创建此目录
可以使用 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` 函数创建目录。
相关推荐
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)