(一)编码格式的介绍
修改py文件的编码格式:在程序第一行写 #encoding=gbk 修改为gbk编码格式
(二)文件的读写原理(读取磁盘文件中的内容)
file=open("a.txt","r") #"r"表示read
print(file.readlines()) #readlines()会将文本文件中的内容读出且以列表形式展示
file.close()
(三)常用的文件打开方式
source_file=open("logo.png",rb) #源文件以读的二进制方式读取
target_file=open("copy.png",wb) #目标文件以写的二进制文件写,目标文件是copy.png
target_file.write(source_file.read())
source_file.close()
target_file.close()
(四)文件对象的常用方法
file=open('a.txt','r')
print(file.read())
print(file.readline())
print(file.readlines())#作为列表返回
tell()方法指针位置从0开始算
flush()方法之后仍然可以向文件写入内容(因为没有关闭文件),但close()方法之后不行
(五)with语句(上下文管理器)
①若一个类中实现了特殊方法__enter__()和__exit__(),则该类遵守了上下文管理协议,该类的实例对象称为上下文管理器
②离开运行时上下文,会自动调用上下文管理器的特殊方法__exit__()进行退出
with open("c.txt","r") as file: #相当于file=open("c.txt","r")
print(file.read()) #不用再写file.close(),因为离开with语句块时自动关闭文件资源
#with语句实现文件的复制
with open("a.png","rb") as source_file:
with open("b.png","wb") as target_file:
target_file.write(source_file.read())
(六)目录操作
import os
os.system("notepad.exe") #打开记事本,也可在WIN中输入notepad
os.system("calc.exe") #打开计算器,也可在WIN中输入
#os模块也可直接调用可执行文件
1,os模块操作目录相关函数
该部分函数和ubuntu系统的终端命令又相似
该部分一般用在办公自动化
import os
print(os.getcwd())
lst=os.listdir("../chap15") #listdir()函数返回列表,".."表示上一级目录
print(lst)
os.mkdir(newdir) #创建目录
os.makedirs("/a/b/c") #创建多级目录
os.rmdir(newdir) #删除目录
os.removedirs("a/b/c") #删除多级目录
2,os.path模块操作目录相关函数
import os.path
print(os.path.abspath('demo3.py'))#获取demo3.py文件的绝对路径
print(os.path.exists('demo13.py'),os.path.exists('12.txt'))#结果返回True/False
print(os.path.join('E:\\python','demo6.py')) #前后进行拼接即E:\python\demo6.py
print(os.path.split('E:\\vippython\\chapter11\\demo.py'))#将文件路径和文件名分开即('E:\\vippython\\chapter11','demo.py')
print(os.path.splitext('demo4.py'))#输出{'demo4','.py'}
print(os.path.basename('E:\\vippython\\chapter11\\demo.py'))#输出demo.py,从路径中提取文件名
print(os.path.dirname('E:\\vippython\\chapter11\\demo.py'))#输出E:\vippython\chapter11,从路径中提取目录,不包括文件名
print(os.path.isdir('E:\\vippython\\chapter11\\demo.py'))#输出False,因为demo.py不是路径名
(七) 实际案例代码
在 办公自动化 中刚开始学的就是 文件处理
#列出指定目录下的所有.py文件
import os
path=os.getcwd() #获取当前路径,当然也可以指定相应路径
lst=os.listdir(path)
for filename in lst:
if filename.endswith('.py'):
print(filename)
#逐次获取主目录和子目录下的对应目录路径,目录名,文件名
import os
path=os.getcwd()#获取当前路径,也可以指定路径
lst_files=os.walk(path)
for dirpath,dirname,filename in lst_files: #会逐层逐次访问主目录和子目录下的路径,目录名,文件名
print(dirpath) #输出当前目录的路径
print(dirname) #输出当前目录下的子目录名
print(filename) #输出当前目录下的文件名不是子目录名
第二个代码块中,用到了 os模块中重要的方法walk(), 该方法可以递归遍历主目录下的文件以及主目录中子目录下的文件