Python文件以及文件夹相关操作
2017-04-18 本文已影响87人
学而时习之_不亦说乎
获取目录下所有后缀名称
import os
def GetSuffix(path):
suffix = []
for root, dirs, files in os.walk(path):
for file_name in files:
filename, file_extension = os.path.splitext(file_name)
if file_extension not in suffix:
suffix.append(file_extension)
#print file_extension
return suffix
上面的这个函数用到了os.walk这个函数,它主要功能是遍历当前目录,并且返回三个元组,(dirpath, dirnames, filenames)
。dirpath
是一个字符串,指明了文件夹的路径。dirnames 是一个列表,里面存储的是dirpath
文件夹下的子文件夹。filenames
也是一个列表,存储的则是dirpath文件夹下的所有文件。上面的函数就是直接使用了filenames
这个元组。
删除特定后缀的文件
def RemoveSuffixFile(path,suffix):
for root, dirs, files in os.walk(path):
for file_name in files:
filename, file_extension = os.path.splitext(file_name)
if file_extension in suffix:
os.remove(os.path.join(root,file_name))
print (os.path.join(root,file_name)+' is removed')
获取目录下所有子文件夹或者文件名
from os import listdir
from os.path import isfile, isdir, join
#定义一个函数来返回FilePath文件加下所有的文件
def ListFiles(FilePath):
#listdir会返回文件夹下所有的文件,包括子文件夹,类似与matlab中的dir函数。
#isfile检查其为文件还是文件夹
onlyfiles = [ f for f in listdir(FilePath) if isfile(join(FilePath,f)) ]
return onlyfiles;
#同理,可以返回FilePath目录下所有的文件夹
def ListDir(FilePath):
#listdir会返回文件夹下所有的文件,包括子文件夹,类似与matlab中的dir函数。
#isfile检查其为文件还是文件夹
onlyfiles = [ f for f in listdir(FilePath) if isdir(join(FilePath,f)) ]
return onlyfiles;
按序号重命名(格式转换)文件夹下图像文件,并统一格式
def FormatFile(path,suffix,tosuffix):
for root, dirs, files in os.walk(path):
for i, file_name in enumerate(files):
filename, file_extension = os.path.splitext(file_name)
if file_extension in suffix and file_extension != tosuffix:
print("convert "+file_name)
img = Image.open(os.path.join(root,file_name)).convert('RGB')
img.save(os.path.join(root,(str(i)+tosuffix)))
os.remove(os.path.join(root,file_name))
elif file_extension in suffix and file_extension == tosuffix:
os.rename(os.path.join(root,file_name),os.path.join(root,(str(i)+tosuffix)))
else:
print('skip file');