python os.makedirs doesn't create directory
出于一些愚蠢的原因,下面的工作是创建存储在
1 2 3 4 5 6 | 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):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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) |
输出:
1 2 3 4 5 6 | ('./', []) # before ('./', ['temp']) # after ('./temp', ['results', 'logs', 'config']) ('./temp/results', []) ('./temp/logs', []) |
创建mcve解决了您的问题。
1
2
3
4
5
6 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
你也不需要保护
修复:
1 2 3 4 5 | 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 |
给定的代码没有错误,您修复了它。
1 2 3 4 5 6 7 | output_dir = '.' 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) |