我需要从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' 。这是什么意思?
答案 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])