Windows服务器下Python识别文件夹路径报错,寻求解决方案
问题解决步骤
核心错误分析
报错OSError: [WinError 123]的直接原因有两个:
- 路径转义字符解析错误:Python中字符串里的
\是转义符,比如\a会被解析为ASCII控制字符\x07,导致实际路径变成无效的E:\x07utomatic_backups\Auto_backup_mysql.sql。 - source变量指向错误:你把source设为了具体文件路径,但
os.listdir()需要传入文件夹路径,传入文件会触发路径无效错误。
修正方案
修复路径写法:Windows路径在Python中可以用三种方式避免转义问题:
- 用原始字符串:在字符串前加
r,比如r'E:\automatic_backups' - 用双反斜杠:
'E:\\automatic_backups' - 用正斜杠:
'E:/automatic_backups'
- 用原始字符串:在字符串前加
修正source变量:将source改为文件夹路径,而非文件路径。
增强代码健壮性:添加备份目录自动创建逻辑,避免目录不存在时的报错。
修正后的代码
import os import shutil import uuid # 使用原始字符串避免转义问题,source指向目标文件夹 source = r'E:\automatic_backups' # 同样处理备份目录路径 new_local = r'E:\automatic_backups\backup' # 确保备份目录存在,不存在则自动创建 os.makedirs(new_local, exist_ok=True) # 遍历源文件夹下的文件 for filename in os.listdir(source): if filename == "Auto_backup_mysql.sql": uuid_code = uuid.uuid4().hex backup_name = f"{uuid_code}_{filename}" src_path = os.path.join(source, filename) dst_path = os.path.join(new_local, backup_name) shutil.copy(src_path, dst_path)
内容的提问来源于stack exchange,提问作者Alekis
相关产品推荐
相关产品推荐

