| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- import os
- from . import Debug
- import platform
- def GetExtension(path):
- """
- 获得扩展名
- """
- return os.path.splitext(path)[1]
- def GetNameNotExtension(path):
- """
- 获得无扩展名的文件名
- """
- return os.path.splitext(path)[0]
- def FindAllFiles(path, extensions=None, startPath=None):
- """
- 获得所有文件路径
- path 可以是文件或目录
- extensions 是List类型 为None时,默认获得所有文件
- startPath 为None时,返回的是文件的绝对路径
- """
- _ls = []
- if os.path.isfile(path):
- extension = GetExtension(path).lower()
- if extensions is None:
- if startPath is None:
- _ls.append(PathFormatUTF8(path))
- else:
- _ls.append(PathFormatUTF8(os.path.relpath(path, startPath)))
- else:
- if extension in extensions:
- if startPath is None:
- _ls.append(PathFormatUTF8(path))
- else:
- _ls.append(PathFormatUTF8(
- os.path.relpath(path, startPath)))
- elif os.path.isdir(path):
- for childPath in os.listdir(path):
- children = FindAllFiles(os.path.join(
- path, childPath), extensions, startPath)
- if children:
- _ls.extend(children)
- else:
- Debug.Log("%s路径不存在" % path)
- raise Exception
- return _ls
- def DeletePathAll(path):
- """
- 删除文件或文件夹
- """
- if os.path.isfile(path):
- os.remove(path)
- elif os.path.isdir(path):
- for childPath in os.listdir(path):
- DeletePathAll(os.path.join(path, childPath))
- os.rmdir(path)
- elif not os.path.exists(path):
- pass
- else:
- Debug.Log("%s路径有问题,别动,请找程序查看" % path)
- raise Exception
- def DeletePathUtilIsNone(path, untilPath=None):
- """
- 删除路径,如果当前路径文件夹中为空,会迭代删除文件夹
- 直到untilPath为止
- untilPath 默认为None, 代表直到找到不为空的父路径停止删除
- """
- deletes = []
- if os.path.isfile(path):
- os.remove(path)
- deletes.append(path)
- deletes.extend(DeletePathUtilIsNone(os.path.dirname(path), untilPath))
- elif os.path.isdir(path):
- if len(os.listdir(path)) <= 0:
- if untilPath is None or path != untilPath:
- os.rmdir(path)
- deletes.append(path)
- deletes.extend(DeletePathUtilIsNone(
- os.path.dirname(path), untilPath))
- elif not os.path.exists(path):
- pass
- else:
- Debug.Log("%s路径有问题,别动,请找程序查看" % path)
- raise Exception
- return deletes
- def DeletePathUtilIsNoneOnUnityProject(path, untilPath=None):
- """
- 删除路径,如果当前路径文件夹中为空,会迭代删除文件夹
- 直到untilPath为止
- untilPath 默认为None, 代表直到找到不为空的父路径停止删除
- 类似DeletePathUtilIsNone,区别在于这里还会判断unity3d的.meta文件
- """
- deletes = []
- if os.path.isfile(path):
- os.remove(path)
- deletes.append(path)
- metafile = path + '.meta'
- if os.path.exists(metafile):
- os.remove(metafile)
- deletes.append(metafile)
- deletes.extend(DeletePathUtilIsNoneOnUnityProject(
- os.path.dirname(path), untilPath))
- elif os.path.isdir(path):
- if len(os.listdir(path)) <= 0:
- if untilPath is None or path != untilPath:
- os.rmdir(path)
- deletes.append(path)
- metafile = path + '.meta'
- if os.path.exists(metafile):
- os.remove(metafile)
- deletes.append(metafile)
- deletes.extend(DeletePathUtilIsNoneOnUnityProject(
- os.path.dirname(path), untilPath))
- elif not os.path.exists(path):
- pass
- else:
- Debug.Log("%s路径有问题,别动,请找程序查看" % path)
- raise Exception
- return deletes
- def DirNotExistAndCreate(dirPath):
- """
- 判断目录是否存在,不存在则创建出来
- """
- if not os.path.exists(dirPath):
- parentDirPath = os.path.dirname(dirPath)
- if not os.path.exists(parentDirPath):
- DirNotExistAndCreate(parentDirPath)
- os.makedirs(dirPath)
- def PathFormatUTF8(path):
- platformName = platform.system()
- if platformName == 'Linux':
- return path
- elif platformName == 'Windows':
- return path.decode('gb2312')
- elif platformName == 'Darwin':
- return path
- else:
- return path
|