os.makedirs(p['snapshot_path'],exist_ok=False)报错OSError: [WinError 123] 文件名、目录名或卷标语法不正确。: './snapshot/hrcnet_base_[]_[2023-06-09_10:20:18]'
时间: 2024-04-05 21:31:05 浏览: 94
这个错误通常是由于文件路径或文件名中包含非法字符导致的。比如在Windows系统中,文件名不能包含以下字符:\ / : * ? " < > |。请检查你的文件名是否包含了这些字符或其他非法字符,如果有的话,请将其删除或替换为合法字符。另外,你也需要确保文件路径的存在和正确性。建议使用绝对路径而不是相对路径来创建文件夹。
相关问题
os.makedirs(folder_path, exist_ok=True)报错为[WinError 5] 拒绝访问。: 'C:\\Users\\Administrator',怎么解决
当你遇到 `os.makedirs(folder_path, exist_ok=True)` 报出 `[WinError 5]` 的错误,这通常意味着你在尝试创建目录时权限不足或者目标路径已经存在,并且 `exist_ok=True` 参数并未允许覆盖已存在的文件夹。针对这个问题,你可以按照以下步骤尝试解决:
1. **检查权限**:确保你的账户拥有创建该文件夹所需的权限。如果是管理员权限运行程序,可以尝试以管理员身份运行。
2. **修改文件夹权限**:右键点击文件夹 -> 属性 -> 安全性,查看并给予当前用户适当的权限,如读写权限。
3. **确认路径不存在**:如果目录确实存在并且你不想覆盖,可以选择删除后再尝试创建,或者直接操作其父级目录(去掉多余的路径部分),再创建缺失的部分。
4. **循环创建**:使用递归函数或者try-except结构,逐级创建目录,直到达到目的位置。
```python
def create_dir_recursively(path):
try:
os.makedirs(os.path.dirname(path), exist_ok=True)
except FileExistsError as e:
pass
folder_path = r'C:\Users\Administrator'
create_dir_recursively(folder_path)
```
修改下列代码的错误pns_folder = os.path.join(src_folder, "PNS Files") os.makedirs(pns_folder) bg_folder = os.path.join(src_folder, "BG Files") os.makedirs(bg_folder) # 初始化文件夹,用于计数移动了多少文件夹 PNS_files_count = 0 BG_files_count = 0 # 遍历目标文件夹中的文件夹和文件 for root, dirs, files in os.walk(src_folder): for dir in dirs: if PNS_keyword in dir: os.makedirs(os.path.join(pns_folder, dir)) elif BG_keyword in dir: os.makedirs(os.path.join(bg_folder, dir)) for filename in files: file_path = os.path.join(root, filename) if os.path.isfile(file_path): if PNS_keyword in filename: folder_path = os.path.join(pns_folder, os.path.basename(os.path.dirname(file_path))) os.makedirs(folder_path, exist_ok=True) os.rename(file_path, os.path.join(folder_path, filename)) PNS_files_count += 1 elif BG_keyword in filename: folder_path = os.path.join(bg_folder, os.path.basename(os.path.dirname(file_path))) os.makedirs(folder_path, exist_ok=True) os.rename(file_path, os.path.join(folder_path, filename)) BG_files_count += 1 # 计算移动了多少文件夹 a1 = PNS_files_count / 2 b1 = BG_files_count / 2
这段代码的错误在于缺少了PNS_keyword和BG_keyword的定义,需要在代码中进行定义。同时,还需要判断目标文件夹中是否已经存在PNS Files和BG Files文件夹,如果已经存在,则不再创建。
修改后的代码如下:
```
import os
PNS_keyword = "PNS" # 定义PNS关键字
BG_keyword = "BG" # 定义BG关键字
pns_folder = os.path.join(src_folder, "PNS Files")
if not os.path.exists(pns_folder):
os.makedirs(pns_folder)
bg_folder = os.path.join(src_folder, "BG Files")
if not os.path.exists(bg_folder):
os.makedirs(bg_folder)
# 初始化文件夹,用于计数移动了多少文件夹
PNS_files_count = 0
BG_files_count = 0
# 遍历目标文件夹中的文件夹和文件
for root, dirs, files in os.walk(src_folder):
for dir in dirs:
if PNS_keyword in dir:
pns_sub_folder = os.path.join(pns_folder, dir)
if not os.path.exists(pns_sub_folder):
os.makedirs(pns_sub_folder)
elif BG_keyword in dir:
bg_sub_folder = os.path.join(bg_folder, dir)
if not os.path.exists(bg_sub_folder):
os.makedirs(bg_sub_folder)
for filename in files:
file_path = os.path.join(root, filename)
if os.path.isfile(file_path):
if PNS_keyword in filename:
folder_path = os.path.join(pns_folder, os.path.basename(os.path.dirname(file_path)))
os.makedirs(folder_path, exist_ok=True)
os.rename(file_path, os.path.join(folder_path, filename))
PNS_files_count += 1
elif BG_keyword in filename:
folder_path = os.path.join(bg_folder, os.path.basename(os.path.dirname(file_path)))
os.makedirs(folder_path, exist_ok=True)
os.rename(file_path, os.path.join(folder_path, filename))
BG_files_count += 1
# 计算移动了多少文件夹
a1 = PNS_files_count / 2
b1 = BG_files_count / 2
```
这个修改后的代码在前面加入了PNS_keyword和BG_keyword的定义,并且在创建PNS Files和BG Files文件夹之前,判断它们是否已经存在,如果已经存在,则不再创建。
阅读全文