1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#encoding: utf-8
#author: walker
#date: 2013-12-06
#summary: 深度遍历指定目录,更换指定扩展名
import
os
import
os.path
#读入指定目录并转换为绝对路径
rootdir
=
raw_input
(
'root dir:\n'
)
rootdir
=
os.path.abspath(rootdir)
print
(
'absolute path:\n'
+
rootdir)
#读入原扩展名并标准化
old_ext
=
raw_input
(
'old extension:\n'
)
old_ext
=
old_ext.strip()
if
old_ext[
0
] !
=
'.'
:
old_ext
=
'.'
+
old_ext
#读入新扩展名并标准化
new_ext
=
raw_input
(
'new extension:\n'
)
new_ext
=
new_ext.strip()
if
new_ext[
0
] !
=
'.'
:
new_ext
=
'.'
+
new_ext
for
parent, dirnames, filenames
in
os.walk(rootdir):
for
filename
in
filenames:
pathfile
=
os.path.join(parent, filename)
if
pathfile.endswith(old_ext):
new_pathfile
=
os.path.splitext(pathfile)[
0
]
+
new_ext
print
(
'======================================================='
)
print
(pathfile)
print
(
'-------------------------------------------------------'
)
print
(new_pathfile)
print
(
'======================================================='
)
os.rename(pathfile, new_pathfile)
|
PS:上述功能一个shell命令也可以实现
1
2
3
|
#将后缀.ini换成.txt
#路径名可以是相对路径或绝对路径
find
路径名 | rename
's/\.ini$/\.txt/'
|
注意,上面的rename命令是perl版的rename命令。
PS2:scandir的兼容代码。
1
2
3
4
5
6
|
# Use the built-in version of scandir/walk if possible, otherwise
# use the scandir module version
try
:
from
os
import
scandir, walk
#python3.5+
except
ImportError:
from
scandir
import
scandir, walk
#python3.4-
|
*** walker ***
本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1337457如需转载请自行联系原作者
RQSLT