从for循环创建目录

时间:2014-04-21 16:46:11

标签: python for-loop directory

我需要从for循环创建目录。我有一个清单。

a = [banana 1234, apple 456, orange 789]

我需要创建以列表中的数字结尾的数字命名的文件夹。例如。

C:\folder\1234; C:\folder\456

等等。

代码是

for length in atrinkta:
folder = re.findall(r'\d{9,}', length)
os.makedirs("D:/python_study/images/skelbimai/" + folder)

但是我收到错误" TypeError:无法连接' str'和'列出'对象" 不知道该怎么做。请有人帮忙。

修改 我第二次尝试了你的方法。删除创建的文件夹后因任何原因python给我错误

WindowsError: [Error 183] Cannot create a file when that file already exists: 'D:/python_study/images/skelbimai/'

2ndEdit

shaktimaan,现在我收到其他错误 AttributeError:' NoneType'对象没有属性' group' 。这是什么意思?

2 个答案:

答案 0 :(得分:0)

这就是你要找的东西:

>>> import re
>>> pattern = re.compile(r'\d+')
>>> a = ['banana 1234', 'apple 456', 'orange 789']
>>> for item in a:
...     dir_name = 'D:/python_study/images/skelbimai/{}'.format(re.search(pattern, item).group(0))
...     if not os.path.isdir(dir_name):
...         os.mkdir(dir_name)

这是它的工作原理。正则表达式在列表的每个元素中查找数字。你可以这样做:

>>> import re
>>> pattern = re.compile(r'\d+')
>>> a = ['banana 1234', 'apple 456', 'orange 789']
>>> for item in a:
...     print re.search(pattern, item).group(0)
...
'1234'
'456'
'789'

您只需将基本目录与上面计算的每个数字连接起来,并在每个数字上调用os.mkdir。由于您在循环中创建目录,因此不需要makedirs

答案 1 :(得分:0)

试试这个

for length in atrinkta:
    folder = re.search(r'(\d+)', length)
    os.makedirs("D:/python_study/images/skelbimai/" + folder.groups()[0])