文件读取 open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
Character Meaning
--------- ---------------------------------------------------------------
'r' open for reading (default)
'w' open for writing, truncating the file first
'x' create a new file and open it for writing
'a' open for writing, appending to the end of the file if it exists
'b' binary mode
't' text mode (default)
'+' open a disk file for updating (reading and writing)
'U' universal newline mode (deprecated)
========= ===============================================================
The default mode is 'rt' (open for reading text).
如果是除text的类型,open时需使用'rb'作为参数,open('','rb')
文件读取流程:
open(文件名) --->返回值:stream ---> stream.read 读取管道中的内容
读操作
read readable readline readlines
st = open(r'D:\test.txt') # r用来去除转义
con = st.read() # 读取文件内容
print(con)
con = st.readable() # 判断文件是否可以读取,返回bool类型
print(con)
st = open(r'D:\test.txt') # r用来去除转义
con = st.readline() # 根据顺序返回文件内一行
print(con)
st = open(r'D:\test.txt') # r用来去除转义
con = st.readlines() # 根据顺序返回文件所有行,返回值为一个列表
print(con)
hello
world
True
hello
['hello\n', 'world']
写操作
mode是'w'模式,为写操作,每次都会讲原内容删除,写入当前内容
mode是'a'模式,为追加写操作,往原文件中追加
write writelines
st = open(r'D:\test.txt', 'w')
st.write('welcome') # 文件写入
st.writelines(['hello', 'world']) # 通过可迭代类型写入文件,默认没有换行效果
st.close() # 释放资源
文件内显示:
welcomehelloworld
st = open(r'D:\test.txt', 'a') # 追加写入
st.write('how are you')
st.close() # 释放资源
文件内显示:
welcomehelloworldhow are you
文件复制
原理:通过读取-->写入 分两步进行文件复制
举例
with open(r'D:\3-141023161035.jpg', 'rb') as stream: # 使用with,可以自动释放资源
con = stream.read()
with open(r'D:\1.jpg', 'wb') as wstream:
wstream.write(con)
OS模块
import os
os.path.dirname(__file__) 查询当前目录路径 os.getcwd()可以达到同样效果
os.path.join('path','filename') 根据目录路径,文件名拼接绝对路径
os.path.abspath('filename') 通过相对路径返回绝对路径
os.path.isabs('path') 判断是否是绝对路径,返回值为布尔类型
os.path.isfile('path') # 判断是否为文件
os.path.isdir('path') # 判断是否为目录
os.listdir('path')#列举目录下所有项,以列表输出
os.path.split os.path.splitext os.path.getsize
result = os.path.split(r'D:\3-141023161035.jpg') # 将绝对路径分割为目录、文件名的元组
print(result)
result = os.path.splitext(r'D:\3-141023161035.jpg') # 分隔文件的扩展名
print(result)
result = os.path.getsize(r'D:\3-141023161035.jpg') # 已字节为单位输出文件大小
print(result)
('D:\\', '3-141023161035.jpg')
('D:\\3-141023161035', '.jpg')
181414
os.path.exists os.mkdir os.rmdir os.remove
result = os.path.exists(r'D:\1.py') # 判断文件是否存在
print(result)
os.mkdir(r'D:\1.py') # 创建文件夹
os.rmdir(r'D:\1.py') # 删除文件夹,删除时目录必须为空
os.remove(r'D:\1.jpg') # 删除文件
os.chdir(r'D:\\') # 切换当前所在目录
print(os.getcwd())
False
D:\