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');
上一篇下一篇

猜你喜欢

热点阅读