首页 > 名博 > 正文

Python os和sys 模块的总结和使用os模块写的一个匹配指定目录下的文件

os 和sys 模块平常使用的不多,这里记录下一些常用的用法,方便用的时候查看。


一、os模块相关

更多详细的介绍可以参考这个参考链接http://www.runoob.com/python3/python3-os-file-methods.html

常用方法

os.getcwd()#返回当前工作目录

os.listdir(path)#返回path指定的文件夹包含的文件或文件夹的名字的列表。

os.remove(path)#删除路径为path的文件。如果path是一个文件夹,将抛出OSError;

os.removedirs(path)#递归删除目录。

os.rename(src,dst)#重命名文件或目录,从src到dst

os.rmdir(path)#删除path指定的空目录,如果目录非空,则抛出一个OSError异常二、os.path模块的常用方法

参考链接http://www.runoob.com/python3/python3-os-path.html

常用方法

os.path.abspath(path)#返回绝对路径

os.path.basename(path)#返回文件名

os.path.dirname(path)#返回文件路径

os.path.getsize(path)#返回文件大小,如果文件不存在就返回错误

os.path.isabs(path)#判断是否为绝对路径

os.path.isfile(path)#判断路径是否为文件

os.path.isdir(path)#判断路径是否为目录

os.path.split(path)#把路径分割成dirname和basename,返回一个元组

os.path.splitext(path)#分割路径,返回路径名和文件扩展名的元组

os.path.walk(path,visit,arg)#遍历path,进入每个目录都调用visit函数,

#visit函数必须有3个参数(arg,dirname,names),

#dirname表示当前目录的目录名,names代表当前目录下的所有文件名,

#args则为walk的第三个参数

forroot,dirs,filesinos.walk(path):

#print(root)#当前目录路径

#print(dirs)#dirs是一个list,内容是该文件夹中所有的目录的名字

#print(files)#当前路径下所有非目录子文件(不包括子目录)


三、sys模块

sys.argv#实现从程序外部向程序传递参数

sys.exit([arg])#程序中间的退出,arg=0为正常退出

sys.path#获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,

#就可以在程序中import时正确找到

sys.argv[0]#获取当当前脚本的绝对路径

使用os模块和re正则模块写了个获取指定路径下包含给定条件的所有文件的小脚本,下面是详细代码。

#!/usr/bin/python3

#-*-coding:utf-8-*-

#@File:get_all_file.py

#@Software:PyCharm

"""

获取给定的一个文件件的决定路径返回这个路径下包含某些特征名字的文件

"""

importos

importre

classFileList(object):

"""

dir_path:要匹配的文件夹的绝对路径

match_name:要匹配的条件

match:匹配的规则judge_endjudge_starjudge_contain

"""

def__init__(self,dir_path,match_name=None,match_rule="judge_end"):

self.file_dir=dir_path

self.match_name=match_name

self.match_rule=match_rule

@staticmethod

defjudge_end(string='',rule_name=None):

"""

判断是否是以.结尾的xx文件

:paramstring:

:paramrule_name:想要获取以xx结尾的文件

:paramself:

:return:

"""

patten='^.*{}$'.format(rule_name)

returnre.match(patten,string)

@staticmethod

defjudge_start(string='',rule_name=None):

patten=r'^{}.*$'.format(rule_name)

returnre.match(patten,string)

@staticmethod

defjudge_contain(string='',rule_name=None):

patten=r'^.*{}.*$'.format(rule_name)

returnre.match(patten,string)

defget_files(self):

"""

返回查询到的所有文件的绝对路径的一个list

:return:

"""

file_dirs=[]

forroot,filesinos.walk(self.file_dir):

#print(root)#当前目录路径

#print(files)#当前路径下所有非目录子文件

forfinfiles:

ifself.match_rule=="judge_end":

fun=self.judge_end(f,self.match_name)

elifself.match_rule=="judge_start":

fun=self.judge_start(f,self.match_name)

elifself.match_rule=="judge_contain":

fun=self.judge_contain(f,self.match_name)

else:

raiseException("match_rule输入不符合要求")

iffun:

file_dirs.append(os.path.join(root,f))

returnfile_dirs

defget_file_name_file_path(self):

"""

返回查询到的所有文件的名字和绝对路径的的字典

:return:

"""

file_dict={}

forroot,filesinos.walk(self.file_dir):

forfinfiles:

ifself.match_rule=="judge_end":

fun=self.judge_end(f,self.match_name)

else:

raiseException("match_rule输入不符合要求")

iffun:

iffile_dict.get(f):

continue

file_dict[f]=os.path.join(root,f)

returnfile_dict

if__name__=='__main__':

file_dir=r'D:worksplit_excel_1'

file_list=FileList(file_dir,'xlsx',match_rule="judge_end").get_file_name_file_path()

print(file_list)

file_dict=FileList(file_dir,match_rule="judge_end").get_file_name_file_path()

print(file_dict)


网友评论

验证码 换一张
取 消
暂无评论...
为您推荐
  • 相关阅读
  • 业界资讯
  • 手机通讯
  • 电脑办公
  • 新奇数码
  • 软件游戏
  • 科学探索