python之写入文件
1 os模块
os模块的学习参考的是Python必学的OS模块详解
1.1 os模块简介
(1)os(operating system):OS模块是Python标准库中的一个用于访问操作系统功能的模块,使用OS模块中提供的接口,可以实现跨平台访问。
(2)操作:获取平台的信息、对目录操作、判断操作
1.2 常用操作
'''
os模块
'''
# 系统操作
import os
# os.getcwd: 获取当前的路径
print(os.getcwd()) # F:\教材\python学习\python练习\25
# os.listdir: 返回指定目录的所有文件名和目录名,并以列表形式返回
print(os.listdir())
# os.mkdir: 创建一个目录,只创建一个目录文件
os.mkdir('demo23')
# os.rdir: 删除一个空目录。目录有文件则无法删除
# os.chdir: 改变目录
#判断
# os.path.isfile(path):判断指定对象是否为文件。是返回True,否则False
# os.path.isdir(path):判断指定对象是否为目录。是True,否则False
# os.path.exists(path): 检验指定的对象是否存在。是True,否则False
os.listdir()
print(os.path.isdir('F:\教材\python学习\python练习\25')) # False
#path模块
# os.path.getsize():获得文件的大小,如果为目录,返回0
print(os.path.getsize('F:\教材\python学习\python练习\\25'))
# os.path.abspath():获得绝对路径
# os.path.join(path, name):连接目录和文件名
# os.path.split(path):返回路径的目录和文件名,通过将最后一个'/',将目录和文件名分开,而不是一个整体
# os.path.dirname(path):返回文件路径
#创建和删除目录
my_dir1 = 'F:\教材\python学习\python练习\\26'
my_dir2 = 'F:\教材\python学习\python练习\\25'
os.makedirs(my_dir1) # 创建目录
os.rmdir(my_dir1) # 删除目录
os.chdir(my_dir2) # 修改目录
2 文件操作
2.1 文件操作简介
(1)对文件(File)进行输入和产出的操作(IO Input/Output),即通过Python程序对计算机的各种文件进行增删改查的操作。
(2)操作文件的步骤 1.打开文件 2.对文件进行各种操作(读写)然后保存 3.关闭文件
'''
文件操作:
(1)对文件(File)进行输入和产出的操作(IO Input/Output),即通过Python程序对计算机的各种文件进行增删改查的操作。
(2)操作文件的步骤 1.打开文件 2.对文件进行各种操作(读写)然后保存 3.关闭文件
========= ===============================================================
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)
========= ===============================================================
'''
2.2 打开文件
# 1.文件打开
file1 = 'F:\教材\python学习\python练习\\25\demo.txt'
file2 = '"txt"'
# open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
# 返回值 返回了一个对象 这个对象代表的就是当前打开的文件
# 如果目标文件和当前文件在同一级目录下,直接使用文件名即可
file_obj = open(file1)
print(file_obj) # <_io.TextIOWrapper name='F:\\教材\\python学习\\python练习\\25\\demo.txt' mode='r' encoding='cp936'>
2.3 读取文件的方法
'''
文件读取方法
read([size])方法:从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止
readline()方法:每次读出一行内容,比较适合大文件,返回的是每行内容
readlines()方法:读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存
linecache模块:定义输出某个文件(file_name)的第n行,linecache.getline(file_name,n)
'''
file_name = 'demo2.txt'
with open(file_name,encoding='utf-8') as file_obj:
# print(file_obj.read())
# readline()该方法用来读取一行的内容
# readlines() 它会一次性读取文件内容以列表形式返回
r = file_obj.readlines()
print(r[0]) # 白日依山尽
2.4 文件的读取关闭
'''
2.文件读取关闭
可以将文件分为2种类型: 纯文本⽂件(使⽤utf-8编码编写的⽂件) 、二进制⽂件(图⽚ mp3 视频...
# 通过read()来读取文件的内容,调用close关闭文件
# 调用open()来打开⼀个文件,运行完毕就自动把文件关闭
# open()打开⽂件时,默认是以文本⽂件的形式打开的 open()默认的编码 为None。所以处理文本⽂件时要指定编码
'''
# 1 通过read()来读取文件的内容
file1 = 'F:\教材\python学习\python练习\\25\demo.txt'
file_obj = open(file1,'r',encoding='utf-8')
print(file_obj.read())
file_obj.close() # 关闭文件,以免占用内存
# 结果:From the distance, it looked like a skinny tube,
# but as we got closer, we could see it flesh out before our eyes.
# It was tubular, all right, but fatter than we could see from far away.
# Furthermore, we were also astonished to notice that the building
# 2 调用open()来打开⼀个文件,with运行完毕,即相当于把文件关闭
file_name = 'demo2.txt'
with open(file_name,'r',encoding='utf-8') as f:
content1 = f.read()
print(content1) # 白日依山尽 黄河入海流 欲穷千里目 更上一层楼
print(len(content1)) # 23
# 对于较大的文件不要直接使用read()
# help(file_obj.read)
with open(file_name,'r',encoding='utf-8') as f:
content2 = f.read(6) # 白日依山尽
print(content2)
print(len(content2)) # 26
2.5 较大文件读取
# 打开较大的文件
file_name = 'demo.txt'
try:
with open(file_name,encoding='utf-8') as file_obj:
# 定义一个变量 来保存结果
file_content = ''
# 定义一个变量 指定每次读取的大小
chunk = 100
# 创建一个循环来读取内容
while True:
content = file_obj.read(chunk)
# 检查是否读完文件
if not content:
# 内容读取完毕退出循环
break
file_content += content
except FileNotFoundError:
print(f'{file_name}文件不存在.....')
print(file_content,end='')
2.6 文件写入
'''
文件写入:
# write()来向文件中写入内容
# 如果操作的是一个文本文件的时候,则需要传递一个字符串作为参数
# r表示只读
# w表示可以写
# a表示追加
# x 表示用来创建新的文件,如有文件不存在则创建,如果存在就报错
w表示可以写。使⽤w写⼊文件时,如果文件不存在则会创建⼀个文件。如果文件存在则会覆盖原文件内容
'''
file = 'demo3.txt'
with open(file,'w') as f:
f.write('123\n')
f.write('456\n')
# f.write(789\n) # TypeError: write() argument must be str, not int
f.write('789\n')
2.7 二进制文件的操作
'''
二进制文件的操作:
1.读取二进制文件:rb
2.写入二进制文件:wb
'''
file_name = 'F:\教材\python学习\python练习\\25\Kalimba.mp3'
with open(file_name,'rb') as file_obj:
# 将读取到的内容写出来
# 定义一个新的文件
new_name = 'abc.mp3'
with open(new_name,'wb') as new_obj:
# 定义每次读取的大小
chuck = 1024 * 100
while True:
# 读取数据
content = file_obj.read(chuck)
# 判断是否读取完毕
if not content:
break
# 将内容写到新的文件当中
new_obj.write(content)