第十五章 文件读写
常见的字符编码格式
- python的解释器使用的Unicode(内存)
- .py文件在磁盘上使用的是utf-8存储(外存)
对文件的操作
写入文件可以用write()和writelines()
读文件可以用read(),readline()和readlines()
文件的打开模式:只读r,只写w,追加a,二进制用b
打开模式 |
描述 |
r |
以只读模式打开文件,文件的指针将会放在文件的开头 |
w |
以只写模式打开文件,如果文件不存在则创建,如果文件存在则覆盖原有内容,文件指针在文件的开头 |
a |
以追加模式打开文件,如果文件不存在则创建,文件指针在问文件的开头,如果文件存在,则在文件末尾追加内容,文件指针在文件末尾 |
b |
以二进制方式打开文件,不能单独使用,需要与其他模式一起使用,rb或wb |
+ |
以读写方式打开文件,不能单独使用,需要与其他模式一起使用,a+ |
文件对象的常用方法
方法名 |
描述 |
read([size]) |
从文件中读取size个字节或字符的内容返回。若省略[size],则一次性读取文件的所有内容 |
readline() |
从文本文件中读取一行内容 |
readlines() |
把文本文件中每一行都作为独立的字符串对象,并将这些对象放入列表返回 |
write(str) |
将字符串str写入文件 |
writelines(s_list) |
将字符串列表s_list写入文本文件,不添加换行符 |
seek(offset,[whence]) |
将文件指针移动到新的位置,offset表示相对于whence的位置:offset为正则向结束方向移动,为负则向开始方向移动。whence为0(默认值)表示从文件头开始计算,1表示从当前位置开始计算,2表示从文件尾开始计算 |
tell() |
返回文件指针的当前位置 |
flush() |
把缓冲区的内容写入文件,但不关闭文件 |
close() |
把缓冲区的内容写入文件,关闭文件,并释放文件对象相关资源 |
file = open('a.txt','r')
#print(file.readlines())# 将文件内容全部读出来
#print(file.readline())
print(file.read(2))# 可以选择读一部分
file.close()
file = open('b.txt','w')
file.write('Python')
file.close()
file = open('b.txt','a')
file.write('Python')
file.close()
file = open('c.txt','a')
#file.write('hello')
lst = ['java','go','python']
file.writelines(lst)
file.close()
src_file = open('logo.jpg','rb')
target_file = open('copylogo.jpg','wb')
target_file.write(src_file.read())
target_file.close()
src_file.close()
目录操作
os模块
os模块是python内置的与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样
os模块操作目录相关函数
函数 |
说明 |
getcwd() |
返回当前的工作目录 |
listdir(path) |
返回指定路径下的文件和目录信息 |
mkdir(path,[mode]) |
创建目录 |
makedirs(path1/path2…,[mode]) |
创建多级目录 |
rmdir(path) |
删除目录 |
removedirs(path1/path2) |
删除多级目录 |
chdir(path) |
将path设置为当前工作目录 |
import os
#os.system('notepad.exe') # 打开记事本
#os.system('calc.exe') # 打开计算器
# 直接调用可执行文件
os.startfile('D:\\Program Files\\Tencent\\QQ\\Bin\\qq.exe')
import os
print(os.getcwd())
#print(os.listdir('../chap15'))
#os.mkdir('newdir2')
#os.makedirs('A/B/C')
#os.rmdir('newdir2')
#os.removedirs('A/B/C')
os.chdir('D:\\pythonProject\\chap15')
os.path模块
os.path模块操作目录相关函数
函数 |
说明 |
abspath(path) |
用于获取文件或目录的绝对路径 |
exists(path) |
用于判断文件或目录是否存在,如果存在返回True,否则返回False |
join(path,name) |
将目录与目录或文件名拼接起来 |
splitext() |
分离文件名和扩展名 |
basename(path) |
从一个目录提取文件名 |
dirname(path) |
从一个路径中提取文件路径,不包括文件名 |
isdir(path) |
用于判断是否路径 |
import os.path
print(os.path.abspath('demo13.py'))
print(os.path.exists('demo13.py'),os.path.exists('demo18.py'))
print(os.path.join('D:\\pythonProject\\vipPython','demo13.py'))
print(os.path.split('D:\pythonProject\\vipPython\chap15\demo13.py'))
print(os.path.splitext('demo13.py'))
print(os.path.basename('D:\\pythonProject\\vipPython\\chap15\\demo13.py'))
print(os.path.dirname('D:\\pythonProject\\vipPython\\chap15\\demo13.py'))
print(os.path.isdir('D:\\pythonProject\\vipPython\\chap15\\demo13.py'))
'''
D:\pythonProject\vipPython\chap15\demo13.py
True True
D:\pythonProject\vipPython\demo13.py
('D:\\pythonProject\\vipPython\\chap15', 'demo13.py')
('demo13', '.py')
demo13.py
D:\pythonProject\vipPython\chap15
False
'''