我想创建一些文件夹,以逻辑方式存储某些模拟结果和命名系统。
我的代码有4个主要参数供我调查,我想在路径名中动态创建带有这些参数的路径,例如:
a = 'test'
b = 2
c = 3
d = 4
os.chdir('./results/test_b_c_d/outputs')
我现在手动更改a-d的值,因为这些只是一些测试结果。 A需要是一个字符串,但是b-d只是整数。
我见过我能做到
os.path.join('./results/', test, '/outputs/'))
加入'命令将在该路径目录中添加该名称的文件夹,但是我可以使用此命令或类似命令通过更改变量来更改实际文件夹名称吗?
由于
答案 0 :(得分:3)
您正在寻找str.format:
>>> print("./results/{a}_{b}_{c}_{d}/outputs".format(a=a, b=b, c=c, d=d))
./results/test_2_3_4/outputs
答案 1 :(得分:1)
要创建包含变量值的字符串(以及变量值的字符串表示),您需要str.format()
:
a = 'test'
b = 2
c = 3
d = 4
dirname = "{}_{}_{}_{}".format(a, b, c d)
然后使用os.path.join()
以便携方式创建完整路径(因此您的代码适用于任何支持的操作系统)。此外,最好使用绝对路径(这使代码更容易预测),而不是依赖于特定于操作系统的东西(“./xxx”)和/或os.chdir()
。这里我使用o.getcwd()
以root身份使用当前工作目录,但最好使用更可靠的东西,基于当前用户的homedir,应用程序的目录或某些命令行arg或环境变量:
root = os.getcwd() # or whatever root folder you want
dirpath = os.path.join(root, "results", dirname, "outputs")
最后,您使用os.makedirs
在一次调用中创建整个目录树:
if not os.path.exists(dirpath):
os.makedirs(dirpath)
注意:
我见过我可以做
os.path.join('./results/', test, '/outputs/')
os.path.join()
的要点是为当前操作系统使用适当的路径分隔符,因此不要在参数中使用硬编码路径分隔符 - 这应该是os.path.join('results', test, 'outputs')
< / p>
答案 2 :(得分:1)
您可以使用str.format之间的混合来使用变量值构建字符串,并os.path.join使用正确的分隔符智能地构建路径(取决于平台)。
示例:
a = 'test'
b = 2
c = 3
d = 4
my_path = os.path.join(os.getcwd(), 'results', '{}_{}_{}_{}'.format(a,b,c,d), 'outputs')
os.chdir(my_path)
并非os.getcwd是获取当前工作目录的一种解决方案