python - python os.makedirs 不创建目录
问题描述
output_result_dir
出于某种愚蠢的原因,以下内容适用于创建存储在中的不存在目录,而不是存储在中的非现有目录output_log_dir
。后者导致 FileNotFound 错误,描述为“[WinError 3] 系统找不到指定的路径:'runpackage1\calculated\logs'”
log_dir = os.path.join(output_dir, 'logs')
output_config_dir = os.path.join(output_dir, 'config')
output_result_dir = os.path.join(output_dir, 'results')
for directory in [output_result_dir, log_dir, output_config_dir]:
if not os.path.exists(directory):
os.makedirs(directory)
我在这里错过了一些非常愚蠢的东西吗?我还尝试在路径周围插入一个 os.path.abspath 以从相对路径到完整路径,但这也无济于事。
编辑:正如某些人正确指出的那样,从路径更改了目录。实际上,我在这里将两个独立函数的代码复制到了一个独立的块中,因此引入了错误。这不是导致我的问题的问题。
解决方案
无法确认您的错误(https://pyfiddle.io - 3.6):
import os
for root,dirs,files in os.walk("./"):
print (root,dirs)
print("")
output_dir = "./temp"
log_dir = os.path.join(output_dir, 'logs')
output_config_dir = os.path.join(output_dir, 'config')
output_result_dir = os.path.join(output_dir, 'results')
for directory in [output_result_dir, log_dir, output_config_dir]:
os.makedirs(directory)
for root,dirs,files in os.walk("./"):
print (root,dirs)
输出:
('./', []) # before
('./', ['temp']) # after
('./temp', ['results', 'logs', 'config'])
('./temp/results', [])
('./temp/logs', [])
创建 mcve 解决了您的问题。
log_dir = os.path.join(output_dir, 'logs') output_config_dir = os.path.join(output_dir, 'config') output_result_dir = os.path.join(output_dir, 'results') for directory in [output_result_dir, log_dir, output_config_dir]: # using directory if not os.path.exists(path): # using path os.makedirs(path) # using path
您也不需要警卫if not os.path.exists(path):
-不需要,因为如果目录已经存在-os.makedirs(path)
只要您给,使用不会改变exists_ok=True
。
使固定:
log_dir = os.path.join(output_dir, 'logs')
output_config_dir = os.path.join(output_dir, 'config')
output_result_dir = os.path.join(output_dir, 'results')
for directory in [output_result_dir, log_dir, output_config_dir]: # directory
os.makedirs(directory, exists_ok=True) # directory
推荐阅读
- performance - 如何在 AMD 系列 17h CPU 上禁用缓存预取?
- python-3.x - 当我保留这个语句`time.sleep(0.5)`时,为什么程序的输出不是1,2,3
- r - 制作函数时如何解决“不允许多参数返回”
- spring-boot - 使用 RouteLocatorBuilder 调用资源 URL 时引发 UnknownHostException
- python - 使用字符串过滤二维列表
- swift - 如何从父类swift调用类扩展中定义的方法
- python - GEE Python API:导出表失败并出现意外错误
- c# - Datagrid组合框消失的内容+自动完成
- r - 里程半径上的限制标记
- tensorflow - 训练图像大小 Faster-RCNN