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个目标文件