ftp如果路径不存在,怎么先创建路径,再创建目录
时间: 2023-10-11 18:21:00 浏览: 198
在 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()` 函数创建路径和目录。如果目录已经存在,则不会报错,可以直接创建目录。
相关问题
ftp如果路径不存在,你需要先创建路径,再创建目录的代码
你可以使用 `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` 的目录。
python写:如果FTP不存在此目录,则创建
可以使用 `ftplib` 库来实现创建FTP目录的功能。以下是一个示例代码,可以实现如果FTP不存在此目录,则创建的功能:
```python
import ftplib
# 连接FTP服务器
ftp = ftplib.FTP("ftp.example.com")
ftp.login("username", "password")
# 需要创建的目录路径
directory = "/remote/directory/path"
# 判断目录是否存在,如果不存在,则创建
try:
ftp.cwd(directory)
except ftplib.error_perm:
# 目录不存在,创建目录
ftp.mkd(directory)
print(f"Directory '{directory}' created successfully.")
# 关闭FTP连接
ftp.quit()
```
请将上述代码中的 `"ftp.example.com"`、`"username"`、`"password"` 和 `"/remote/directory/path"` 替换为你实际的FTP服务器地址、登录账号、登录密码和需要创建的远程目录路径。
代码中,首先尝试切换到目录 `directory`,如果目录不存在,则会抛出 `ftplib.error_perm` 异常。在异常处理块中,使用 `ftp.mkd(directory)` 来创建目录,并输出创建成功的提示信息。
需要注意的是,FTP服务器可能会限制用户的权限,如果当前用户没有创建目录的权限,`ftp.mkd(directory)` 也会抛出异常。在这种情况下,可以尝试使用 `ftp.sendcmd('SITE MKDIR '+directory)` 来创建目录,这个命令可以绕过某些FTP服务器的权限限制。
阅读全文