with语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,因此来达到释放资源的目的
例:
with open('a.txt','r') as file:
print(file.read())#不用写file.close()语句,with语句会自动关闭文件
os模块(python自带的模块)
- os模块是python内置的与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样。
- os模块与os.path模块用于对目录或文件进行操作
例:
import os
os.system('notepad.ex')#调用记事本
os.system('calc.exe')#调用计算器
os.startfile('C:\\Program Files\\tencent\\QQ\\Bin\\qq.exe')#直接调用可执行文件,括号内为文件地址。本次例为打开qq
os模块操作目录相关函数
- getcwd():返回当前的工作目录
例:
import os
print(os.getcwd())
结果:
E:\Pyhton3.8Project
(返回的是文件的位置)
- listdir(path):返回指定路径下的文件和目录信息
例:
import os
lst=os.listdir('E:\Pyhton3.8Project')
print(lst)
结果:
[‘a.TXT’, ‘text.py’, ‘冰墩墩.py’, ‘小猪佩奇.py’, ‘牵着她的手,慢慢走下去.py’]
- mkdir(path[,mode]):创建目录
例:
import os
lst=os.listdir('E:\Pyhton3.8Project')
print(lst)
os.mkdir('newdir2')
结果:
创建了一个newdir2的文件夹
- makedirs(path1/path2…):创建多级目录
例:
import os
os.makedirs('E:\Pyhton3.8Project\A\B\C')
结果:
创建了一个A/B/C的三级目录
- rmdir(path):删除目录
例:
import os
os.rmdir('E:\Pyhton3.8Project\A\B\C')
结果:
删除了文件C
- removedirs(path1/path2…):删除多级目录
- chdir(path):将path设置为当前工作目录
os.path模块操作目录相关函数
- abspath(path):用于获取文件或目录的绝对路径
例:
import os.path
print(os.path.abspath('a.txt'))
结果;
E:\Pyhton3.8Project\a.txt
(结果为文件的路径)
- exists(path):用于判断文件或目录是否存在,如果存在返回True,不存在返回
例:
import os.path
print(os.path.exists('a.txt'))
结果:
True
- join(path,name):将目录与目录或者文件名拼接起来
例:
import os.path
print(os.path.join('E:\\Pythoan','a.txt'))
结果:
E:\Pythoan\a.txt
(将两个文件名拼在一起)
- split():拆问文件名
例:
import os.path
print(os.path.split('E:\\Pythoan\\a.txt'))
结果:
(‘E:\Pythoan’, ‘a.txt’)
(将文件名拆分)
- splitext():分离文件名和扩展名
例:
import os.path
print(os.path.splitext('a.txt'))
结果:
(‘a’, ‘.txt’)
- basename(path):从一个目录中提取文件名
例:
import os.path
print(os.path.basename('E:\\vipppp\\chap\\hhh'))
结果:
hhh
(最后一级文件名)
- dirname(path):从一个路径中提取文件路径,不包括文件名
例:
import os.path
print(os.path.basename('E:\\vipppp\\chap\\hhh'))
结果:
E:\vipppp\chap
- isdir(path):用于判断是否为路径
两个例子
打印后缀为.py的文件
代码:
import os
path=os.getcwd()
lst=os.listdir(path)
for filename in lst:
if filename.endswith('.py'):#endswith用于文件扩展名是否为.py文件
print(filename)
结果:
text.py
冰墩墩.py
小猪佩奇.py
牵着她的手,慢慢走下去.py
例二:遍历文件夹
import os
path=os.getcwd()
lst_files=os.walk(path)#迭代器对象
for dirpath,dirname,filename in lst_files: #遍历时是一层一层遍历,第一层文件夹为E:\Pyhton3.8Project,第二层文件夹为b文件夹
print(dirpath)#遍历文件路径
print(dirname)#子目录
print(filename)#文件夹名
print('------------------------')
结果:
E:\Pyhton3.8Project
[‘b’]
[‘a.TXT’, ‘text.py’, ‘冰墩墩.py’, ‘小猪佩奇.py’, ‘牵着她的手,慢慢走下去.py’]
E:\Pyhton3.8Project\b
[]
[‘1.py’, ‘2.py’]
结果分析:先遍历第一层文件E:\Pyhton3.8Project,如何遍历出其文件夹,然后是子文件
接着遍历第二层文件夹b文件夹,b文件夹中没有子文件夹,然后遍历子文件