python对文件夹的操作汇总,方便查阅使用
1、遍历指定目录,显示目录下的所有文件名
#-*- coding:utf-8 -*-
import os
def fileInFolder(filepath):
pathDir = os.listdir(filepath) # 获取filepath文件夹下的所有的文件
files = []
for allDir in pathDir:
child = os.path.join('%s\\%s' % (filepath, allDir))
files.append(child.decode('gbk')) # .decode('gbk')是解决中文显示乱码问题
# print child
# if os.path.isdir(child):
# print child
# simplepath = os.path.split(child)
# print simplepath
return files
filepath = "C:\\files"
print fileInFolder(filepath)
输出:
[u'C:\\files\\a.txt', u'C:\\files\\b.txt', u'C:\\files\\c']
2、遍历文件夹及其子文件夹的所有文件,获取文件的列表
#-*- coding:utf-8 -*-
import os
def getfilelist(filepath):
filelist = os.listdir(filepath) # 获取filepath文件夹下的所有的文件
files = []
for i in range(len(filelist)):
child = os.path.join('%s\\%s' % (filepath, filelist[i]))
if os.path.isdir(child):
files.extend(getfilelist(child))
else:
files.append(child)
return files
filepath = "C:\\files"
print getfilelist(filepath)
输出:
['C:\\files\\a.txt', 'C:\\files\\b.txt', 'C:\\files\\c\\d.txt', 'C:\\files\\c\\e.txt', 'C:\\files\\c\\f\\g.txt']
3、Python 遍历子文件和所有子文件夹 输出字符串
参考: http://blog.csdn.net/Qian_F/article/details/9896283
#-*- coding:utf-8 -*-
import os
def getfilelist(filepath, tabnum=1):
simplepath = os.path.split(filepath)[1]
returnstr = simplepath+"目录<>"+"\n"
returndirstr = ""
returnfilestr = ""
filelist = os.listdir(filepath)
for num in range(len(filelist)):
filename=filelist[num]
if os.path.isdir(filepath+"/"+filename):
returndirstr += "\t"*tabnum+getfilelist(filepath+"/"+filename, tabnum+1)
else:
returnfilestr += "\t"*tabnum+filename+"\n"
returnstr += returnfilestr+returndirstr
return returnstr+"\t"*tabnum+">\n"
filepath = "C:\\files"
f = open("test.xml","w+")
f.writelines(getfilelist(filepath))
f.close()
4、对文件批量更名
#-*- coding:utf-8 -*-
import os
def filesRename(filepath):
filelist = os.listdir(filepath) # 获取filepath文件夹下的所有的文件
files = []
for i in range(len(filelist)):
child = os.path.join('%s\\%s' % (filepath, filelist[i]))
if os.path.isdir(child):
continue
else:
newName = os.path.join('%s\\%s' % (filepath, str(i) + "_" + filelist[i]))
print newName
os.rename(child, newName)
filepath = "C:\\files2"
filesRename(filepath)