1、获取帮助文档
help(os)
2、获取当前文件所在目录
filePath = os.getcwd() print(filePath)
C:UserszzPycharmProjectsOJsimple
3、连接目录与文件名或目录
os_testPath = os.path.join(filePath, 'practice.py') print(os_testPath)
C:UserszzPycharmProjectsOJsimplepractice.py
4、返回文件路径,返回path的上一层
fileDir = os.path.dirname(r'UserszzPycharmProjectsOJsimple') print(fileDir) UserszzPycharmProjectsOJ fileDir = os.path.dirname(r'UserszzPycharmProjectsOJsimplepractice.py') print(fileDir) UserszzPycharmProjectsOJsimple
5、返回文件名,不做文件判断,默认返回路径中的根节点
dir_basename = os.path.basename(r'UserszzPycharmProjectsOJsimple') print(dir_basename) simple dir_basename = os.path.basename(r'UserszzPycharmProjectsOJsimplepractice.py') print(dir_basename) practice.py
6、分隔文件名与目录,返回元组
fileSplit = os.path.split(r'UserszzPycharmProjectsOJsimplepractice.py') print(fileSplit) fileSplit = os.path.split(r'UserszzPycharmProjectsOJsimple') print(fileSplit)
('\Users\zz\PycharmProjects\OJ\simple', 'practice.py') ('\Users\zz\PycharmProjects\OJ', 'simple')
7、规范path字符串形式
normPath = os.path.normpath(r'Users/zzPycharmProjectsOJsimplepractice.py') print(normPath)
UserszzPycharmProjectsOJsimplepractice.py
8、判断该路径所指向的目录 文件是否存在,或者要知道其是一个目录还是一个文件
# 判断是不是文件 isFile = os.path.isfile(r'C:UserszzPycharmProjectsOJsimplepractice.py') print(isFile) # 文件不存在 isFile = os.path.isfile(r'C:UserszzPycharmProjectsOJsimplepractic.py') print(isFile) # 判断是不是目录 isDir = os.path.isdir(r'C:UserszzPycharmProjectsOJsimple') print(isDir) # 目录不存在 isDir = os.path.isdir(r'C:UserszzPycharmProject') print(isDir) # 判断文件或目录是否存在 isExist = os.path.exists(r'C:UserszzPycharmProjectsOJsimplepractic.py') print(isExist) True False True False False
9、列出文件夹下所有文件名
list_dir = os.listdir(r'C:Usersz00561563PycharmProjectsOJsimple') print(list_dir) # 输出文件夹下的所有文件名,并判断哪些是文件 for i in list_dir: print(i, os.path.isfile(i)) ['.idea', '01.py', '02.py', '03.py', '04.py', '114.py'] .idea False 01.py True 02.py True 03.py True 04.py True 114.py True
10、目录、文件的创建删除
# 创建目录 os.makedirs(r'C:Usersz00561563PycharmProjectsOJsimple1013') # 删除目录 os.rmdir(r'C:Usersz00561563PycharmProjectsOJsimple1013') # 删除文件 os.remove(r'C:Usersz00561563PycharmProjectsOJsimpled.csv') os.remove('c.csv')
11、获取文件或目录大小、字节
size = os.path.getsize(r'C:Usersz00561563PycharmProjectsOJsimplepractice.py') print(size)
8782
12、其他一些常用函数
# 当前正在使用的平台,window nt print(os.name) # 执行命令 执行成功返回0 print(os.system('dir practice.py')) # 执行重命名命令 print(os.system('move d.txt 2.txt'))
13、获取所有目录及文件名的fullname
a = os.walk(r'C:Usersz00561563PycharmProjectsOJsimple', topdown=False) # 遍历路径下的所有目录和文件,返回迭代对象 存在元组里 包含路径、 根路径 文件夹 文件 ''' ('C:\Users\zz\PycharmProjects\OJ\simple\.idea\inspectionProfiles', [], ['profiles_settings.xml']), ('C:\Users\zz\PycharmProjects\OJ\simple\.idea', ['inspectionProfiles'], ['.gitignore', 'misc.xml', 'modules.xml', 'simple.iml', 'workspace.xml']) ('C:\Users\zz\PycharmProjects\OJ\simple\__pycache__', [], ['list.cpython-38.pyc', 're.cpython-38.pyc']) ''' b = list(a) print(b) for root, dirs, files in os.walk(r'C:UserszzPycharmProjectsOJsimple', topdown=False): # 遍历文件 for name in files: print(os.path.join(root, name)) # 遍历目录 for name in dirs: print(os.path.join(root, name))
C:UserszzPycharmProjectsOJsimple.ideainspectionProfilesprofiles_settings.xml C:UserszzPycharmProjectsOJsimple.idea.gitignore C:UserszzPycharmProjectsOJsimple.ideamisc.xml C:UserszzPycharmProjectsOJsimple.ideamodules.xml C:UserszzPycharmProjectsOJsimple.ideasimple.iml C:UserszzPycharmProjectsOJsimple.ideaworkspace.xml C:UserszzPycharmProjectsOJsimple.ideainspectionProfiles C:UserszzPycharmProjectsOJsimple\__pycache__list.cpython-38.pyc
练习:通过os模块实现文件查找小工具
文件查找小工具
输入: 指定目录、需要查找的文件名
输出:查找到的文件名全路径
功能解析:
1、给出指定目录,能得到所有的文件列表;
2、通过命令行参数,指定要查找的文件名或文件名的一部分;
3、查找第一步中获取的文件列表,找到要查找的文件名并将文件名打印出来。
设计思路:
面向对象
类 Finder
方法1:提取指定目录下的所有文件,包含子目录中的文件
方法2:根据查找文件名过滤文件列表,得到要查找的文件列表
方法3:从文件列表中查找目标文件名
class Finder(): def __init__(self, path, name): self.filePath = path self.fileName = name self.allFileList = [] self.dstFileList = [] self.filecnt = 0 # 获取指定路径下的所有文件列表,返回allFileList def GetAllFileList(self, filepath): for root, dirs, files in os.walk(filepath): for name in files: fullname = os.path.join(root, name) self.allFileList.append(fullname) print(self.allFileList) # 步骤1中获取到的文件列表中查找目标文件,返回dstFileList def GetDstFileList(self, filelist, dstname): for i in filelist: filename = os.path.basename(i) # 全路径中拆出文件名 if filename.upper().find(dstname.upper()) >= 0: # find返回查找字符串的起始索引,找不到返回-1 self.dstFileList.append(i) print(self.dstFileList) # 执行方法,输出查找到的文件 def DoFind(self): self.GetAllFileList(self.filePath) self.GetDstFileList(self.allFileList, self.fileName) for i in self.dstFileList: self.filecnt += 1 print(i) print('共找到{}个目标文件'.format(self.filecnt)) if __name__ == '__main__': fd = Finder(r'C:UserszzPycharmProjectsOJsimple', 'f.csv') # fd = Finder(sys.argv[1], sys.argv[2]) #在命令行中运行程序,接收命令行参数 fd.DoFind()
C:UserszzPycharmProjectsOJsimplef.csv C:UserszzPycharmProjectsOJsimplegf.csv 共找到2个目标文件