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

在python和调用列表项上使用mkdir,python,bash,mkdir,os.system,Python,Bash,Mkdir,Os.system,我想使用“subscrist”中包含的主题名称创建新目录。为此,我调用bash函数“mkdir”,但命令“+subc+”似乎无法将其识别为列表中的一项。你知道怎么解决这个问题吗?抱歉问了这么愚蠢的问题,我还在爬 #!/usr/bin/python import glob import os path ='/data2/kizilirm/Mooney_fMRI_v01/subject_data' subjlist = ['di21_1028', 'dn20_1072', 'ed17_1026

我想使用“subscrist”中包含的主题名称创建新目录。为此,我调用bash函数“mkdir”,但命令“+subc+”似乎无法将其识别为列表中的一项。你知道怎么解决这个问题吗?抱歉问了这么愚蠢的问题,我还在爬

#!/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
正在将
'/home/mansur/Documents/mooney/'+subc+'/'analysis/high_res
传递到
mkdir
字面上

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

d = os.path.join("/home/mansur/Documents/mooney",subj,"anatomy/high_res")
if not os.path.exists(d):
    os.makedirs(d)
如果出了问题,至少你会得到一个例外。而且它的速度更快,携带方便

正在将
'/home/mansur/Documents/mooney/'+subc+'/'analysis/high_res
传递到
mkdir
字面上

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

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

如果出了问题,至少你会得到一个例外。而且它更快速、更便携。

你正在通过+操作符传递dir,字面意思是:
mkdir-p'/home/mansur/Documents/mooney/'+subc+'/'analysis/high_res'
为什么你要调用Bash
mkdir
而不是通过
os.mkdir
os.makedirs
?可能重复@PM2Ring,我试试看你用+运算符传递目录:
“mkdir-p'/home/mansur/Documents/mooney/'+subc+'/'analysis/high_res”
为什么你调用Bash
mkdir
而不是通过
os.mkdir
os.makedirs
执行系统调用?可能是@PM2Ring的重复,我试试看,它工作得非常好@让·弗朗索瓦·法布!谢谢,效果真的很好@让·弗朗索瓦·法布!