这就是我的文件的样子..
a-b-2013-02-12-16-38-54-a.png
a-b-2013-02-12-16-38-54-b.png
我喜欢这样的数千个文件。
我们可以为每组文件制作文件夹,例如a-b
我可以吃吗?我怎么能这样做?
import glob, itertools, os
import re
foo = glob.glob('*.png')
for a in range(len(foo)):
print foo[a]
match=re.match("[a-zA-Z0-9] - [a-zA-Z0-9] - *",foo[a])
print "match",match
那么,那里的错误是什么?
答案 0 :(得分:1)
列出包含glob.glob('*.png')
。
然后,您可以使用正则表达式(import re
)解析每个文件名。
使用os.mkdir(path)
制作目录。
使用os.rename(src, dst)
移动文件。
答案 1 :(得分:0)
此代码适用于您想要执行的操作:
import os
path="./"
my_list = os.listdir(path) #lists all the files & folders in the path ./ (i.e. the current path)
for my_file in my_list:
if ".png" in my_file:
its_folder="something..."
if not os.path.isdir(its_folder):
os.mkdir(its_folder) #creates a new folder
os.rename('./'+my_file, './'+its_folder+'/'+my_file) #moves a file to the folder some_folder.
您必须为要创建的每个文件夹指定名称,并将文件移入(而不是“某些东西......”),例如:
its_folder=my_file[0:3]; #if my_file is "a-b-2013-02-12-16-38-54-a.png" the corresponding folder would have its first 3 characters: "a-b".
答案 2 :(得分:0)
让你盯着看,适应自己需要的东西:
让我们创建一些文件:
$ touch a-b-2013-02-12-16-38-54-{a..f}.png
$ ls
a-b-2013-02-12-16-38-54-a.png a-b-2013-02-12-16-38-54-c.png a-b-2013-02-12-16-38-54-e.png f.py
a-b-2013-02-12-16-38-54-b.png a-b-2013-02-12-16-38-54-d.png a-b-2013-02-12-16-38-54-f.png
一些python
#!/usr/bin/env python
import glob, os
files = glob.glob('*.png')
for f in files:
# get the character before the dot
d = f.split('-')[-1][0]
#create directory
try:
os.mkdir(d)
except OSError as e:
print 'unable to creade dir', d, e
#move file
try:
os.rename(f, os.path.join(d, f))
except OSError as e:
print 'unable to move file', f, e
让我们运行它
$ ./f.py
$ ls -R
.:
a b c d e f f.py
./a:
a-b-2013-02-12-16-38-54-a.png
./b:
a-b-2013-02-12-16-38-54-b.png
./c:
a-b-2013-02-12-16-38-54-c.png
./d:
a-b-2013-02-12-16-38-54-d.png
./e:
a-b-2013-02-12-16-38-54-e.png
./f:
a-b-2013-02-12-16-38-54-f.png