在python上使用mkdir并调用列表项

时间:2018-01-25 12:58:29

标签: python bash mkdir os.system

我想使用' subjlist'中包含的主题名称创建新目录。我称之为bash功能' mkdir'为此,但命令' + subj +'似乎不认为它是列表中的项目。你知道如何解决这个问题吗?抱歉这个愚蠢的问题,我还在爬行。

#!/usr/bin/python

import glob
import os

path ='/data2/kizilirm/Mooney_fMRI_v01/subject_data'

subjlist = ['di21_1028', 'dn20_1072', 'ed17_1026', 'eo56_1016', 
'ge51_1039', 'ha96_1069', 'hp84_1024', 'ht02_1049', 'hw44_1051', 
'ij99_1073', 'ja58_1070', 'ju49_1036', 'km61_1064', 'kr25_1034', 
'lw37_1062', 'lz02_1041', 'mj45_1037', 'nm54_1017', 'od90_1040', 
'ol12_1063', 'os19_1038', 'ow93_1061', 'pk62_1074', 'qq31_1068',         
'qq39_1060', 'tt42_1025', 'ut93_1048', 'ws81_1042','xi27_1050', 
'zd63_1035']

#'series_2_t1_mpr_sag_1iso_p2', 
runlist = ['series_2_t1_mpr_sag_1iso_p2','series_3_BOLD-
fMRI_2x2x(3+0.3)_p2_run1', 'series_4_BOLD-fMRI_2x2x(3+0.3)_p2_run2', 
'series_5_BOLD-fMRI_2x2x(3+0.3)_p2_run3']

os.system("mkdir /home/mansur/Documents/mooney")
counter = 0

for subj in subjlist:
    for run in runlist:
        if run == 'series_2_t1_mpr_sag_1iso_p2':
            print subj , run
            counter = counter + 1
            os.system("mkdir -p 
'/home/mansur/Documents/mooney/'+subj+'/'anatomy/high_res") #Here is the problem!!!
        else:
            continue
print counter

1 个答案:

答案 0 :(得分:3)

os.system("mkdir -p '/home/mansur/Documents/mooney/'+subj+'/'anatomy/high_res") 

正在将'/home/mansur/Documents/mooney/'+subj+'/'anatomy/high_res传递给mkdir ......

您必须使用format。无论如何,不​​要调用系统命令来执行mkdir -p。使用os.path.join撰写您的目录名称,测试dir是否存在,并使用os.makedirs

d = os.path.join("/home/mansur/Documents/mooney",subj,"anatomy/high_res")
if not os.path.exists(d):
    os.makedirs(d)

如果出现问题,至少会遇到异常。它的速度更快更快便携式的。