You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

创建本地或FTP目录前如何检查目录是否存在以避免重复错误?

当然有办法啦!不管是本地目录还是FTP目录,我们都能在创建前先确认它的存在状态,完美避开“folder-already-exists”的报错。下面分两种场景给你详细拆解具体实现:

一、检查本地目录是否存在

不同的编程语言/脚本工具都有成熟的检查方法,这里给你几个常用的示例:

Python 实现

推荐用pathlib(Python3.4+),语法更简洁直观,还能区分目录和同名文件:

from pathlib import Path

target_dir = Path("/path/to/your/local/dir")

# 先判断是否是目录(避免和同名文件混淆)
if not target_dir.is_dir():
    # parents=True 会自动创建不存在的父目录,exist_ok=False 表示存在就报错
    target_dir.mkdir(parents=True, exist_ok=False)
    print(f"成功创建目录: {target_dir}")
else:
    print(f"目录 {target_dir} 已存在,无需重复创建")

如果你习惯用传统的os模块,也可以这样写:

import os

target_dir = "/path/to/your/local/dir"

if not os.path.isdir(target_dir):
    os.makedirs(target_dir, exist_ok=False)
    print(f"目录创建成功")
else:
    print(f"目录已存在")

Bash 脚本实现

-d选项可以直接判断路径是否为目录:

target_dir="/path/to/your/local/dir"

if [ ! -d "$target_dir" ]; then
    # -p 参数会自动创建缺失的父目录
    mkdir -p "$target_dir"
    echo "目录创建成功"
else
    echo "目录已存在"
fi

Windows 批处理实现

需要加上\来确保判断的是目录(避免和同名文件冲突):

set "target_dir=C:\path\to\your\local\dir"

if not exist "%target_dir%\" (
    mkdir "%target_dir%"
    echo 目录创建成功
) else (
    echo 目录已存在
)
二、检查FTP目录是否存在

FTP目录的检查逻辑和本地不同,通常需要通过FTP协议的命令来验证,比如尝试切换到目标目录(如果成功则表示存在)。

Python ftplib 实现

from ftplib import FTP

# 连接FTP服务器
ftp = FTP("ftp.yourserver.com")
ftp.login("your_username", "your_password")

target_dir = "/remote/path/to/ftp/dir"

try:
    # 尝试切换到目标目录,成功则说明目录存在
    ftp.cwd(target_dir)
    print(f"FTP目录 {target_dir} 已存在")
except ftplib.error_perm as e:
    # 大多数FTP服务器会返回550错误码表示目录不存在
    if "550" in str(e):
        ftp.mkd(target_dir)
        print(f"成功创建FTP目录: {target_dir}")
    else:
        # 处理其他权限或服务器错误
        print(f"操作出错: {e}")

# 关闭连接
ftp.quit()

lftp 命令行实现

如果用命令行工具,可以用lftp的条件判断:

#!/bin/bash
FTP_SERVER="ftp.yourserver.com"
FTP_USER="your_username"
FTP_PASS="your_password"
TARGET_DIR="/remote/path/to/ftp/dir"

lftp << EOF
open $FTP_SERVER
user $FTP_USER $FTP_PASS
if ! [ -d $TARGET_DIR ]; then
    mkdir $TARGET_DIR
    echo "FTP目录创建成功"
else
    echo "FTP目录已存在"
fi
quit
EOF

小提示

其实很多工具本身支持“存在则跳过”的参数,比如Python的os.makedirs(exist_ok=True)、Bash的mkdir -p,调用这些命令时即使目录存在也不会报错。但如果你需要明确的日志输出或后续逻辑分支,提前做检查会更灵活。

内容的提问来源于stack exchange,提问作者Muthukumar

火山引擎 最新活动