文件包括 文本文件 和 二进制文件 两种类型。
文本文件一般由单一特定编码的字符组成,如: UTF-8 编码,内容容易统一展示和阅读。由于文本文件存在编码,所以,它也可以被看作是存储在磁盘上的长字符串,如: .txt 格式的文本文件。
二进制文件直接由 比特0 和 比特1 组成,没有统一的字符编码,文件内部数据的组织格式与文件用途有关。(如:图⽚ mp3 视频…)
<变量名> = open(<文件路径及文件名>,<打开模式>)
# 相对路径(相对于当前文件的路径)
# demo.txt 在和 文件.py相同路径下的子文件夹中
file_name = 'demo.txt'
a = open(file_name)
print(a)
# 绝对路径(文件存储在硬盘上的真正路径)
# 听闻.txt 的路径在桌面上
file_name = r'C:\Users\Asus\Desktop\听闻.txt'
b = open(file_name,encoding='utf-8')
print(b)
# 返回值:返回的是一个对象 代表当前打开的文件
这是python官方帮助文档中关于文件打开模式的说明
打开模式 | 含义 |
---|---|
‘r’ | 只读模式(默认) |
‘w’ | 打开文件后进行 覆盖 写入 ,如果文件不存在,则进行创建;如果文件内有内容,则覆盖原文件(内容) |
‘x’ | 创建写模式,如果文件存在,则返回异常 |
‘a’ | 追加写模式,如果文件不存在则进行创建,如果文件存在则在原文件最后追加内容 |
‘b’ | 二进制文件模式 |
‘t’ | 文本文件模式,默认值 |
‘+’ | 在原功能( ‘r’、‘w’、‘x’、‘b’ )基础上增加读写功能 |
# 文件的关闭(close())
file_name = 'demo.txt'
a = open(file_name)
print(a.read())
a.close()
# 文件的关闭(close())
file_name = 'demo.txt'
a = open(file_name)
print(a.read())
a.close()
# 我们都知道,我们是无法在不打开文件的情况下对文件记性读取的
print(a.read())
# with...as 用法
# 有了with...as 语句的使用,可以防止因忘写close(),而导致后续操作对文件产生影响。
# with...as 语句可以自动对文件进行关闭
file_name = r'C:\Users\Asus\Desktop\听闻.txt'
with open(file_name,encoding='utf-8') as obj:
print(obj.read())
print(obj.read()) # ValueError: I/O operation on closed file.
方法 | 含义 |
---|---|
<变量>.read(size = -1) | 从文件读取整个文件的内容。 |
<变量>.readline(size = -1) | 从文件中读取一行内容 |
<变量>.readlines(size = -1) | 从文件中读取所有行,把每行当做一个元素,保存在一个列表中。 |
… | … |
file_name = r'C:\Users\Asus\Desktop\听闻.txt'
with open(file_name,encoding='utf-8') as obj:
print(obj.read())
help(obj.read)
详情请见:Methods of File Objects——size
# 原始字符串内容及长度
file_name = 'demo.txt'
a = open(file_name)
b = a.read()
print(b)
print(len(b))
a.close()
#打印字符串内容及长度
# 每一次读取都是从上一次读取的位置来读取。
# 如果剩余字符的数量小于size,则一下读取剩余的所有内容。
file_name = 'demo.txt'
a = open(file_name)
b = a.read(7)
c = a.read(90)
print(b)
print(len(b))
print(c)
a.close()
# 文件的读取
file_name = r'C:\Users\Asus\Desktop\听闻.txt'
a = open(file_name,encoding = 'utf-8')
# 定义名为 chunk 的变量来制定读取大小
chunk = 7
while True:
b = a.read(chunk)
# 默认读取内容后,进行换行
print(b,end='')
# 没有内容,退出循环
if not b:
break
# readline()和readlines()
file_name = r'C:\Users\Asus\Desktop\听闻.txt'
a = open(file_name,encoding ='utf-8',)
# 打印一行
b = a.readline()
print(b)
# 读取文本中的所有内容,以每行为一个元素,保存在一个列表当中
c = a.readlines()
print(c)
方法 | 含义 |
---|---|
<变量>.write(s) | 向文件中写入内容(字符串或字节流) |
<变量>.writelines(lines) | 将一个元素作为字符串列表的整体写入文件 |
… | … |
# 文件的写入
file_name = 'demo01.txt'
a = open(file_name,'w',encoding='utf-8')
a.write('畏惧信仰,畏惧力量!\n')
a.write('奥利给\n')
a.close()
# 如果要读取的文件存在,使用'w'进行覆盖写,文件内容被覆盖
file_name = 'demo01.txt'
a = open(file_name,'w',encoding='utf-8')
a.write('王牌飞行员申请出战!\n')
由上图可得,我们对原来的文件内容进行了内容的覆盖。
如果你不想覆盖,可以使用 ‘a’ 进行文件的追加
# 如果你不想覆盖,可以使用'a'进行文件的追加
file_name = 'demo01.txt'
a = open(file_name,'a',encoding='utf-8')
a.write('你买单,我就来\n')
a.write('蒙多说你是个...')
# 二进制文件操作
# 通过'rb'模式来进行二进制文件的读取。
file_name = r'C:\Users\Asus\Desktop\昼夜 - 童话镇 (钢琴版).mp3'
with open(file_name,'rb') as a:
print(a.read(100))
# 通过'rb'模式来进行二进制文件的读取。
file_name = r'C:\Users\Asus\Desktop\昼夜 - 童话镇 (钢琴版).mp3'
with open(file_name,'rb') as a:
# print(a.read(100))
# 通过'wb'模式进行二进制文件的写入
# 定义了一个新文件名称 'tonghua.mp3'
new_name = 'tonghua.mp3'
# 二进制文件的覆盖写操作
with open(new_name,'wb') as b:
# 定义读取的大小
chunk = 1024*100 # 1024*100 = 1k*100 = 100k
while True:
c = a.read(chunk)
if not c:
break
b.write(c)
本文地址:https://blog.csdn.net/weixin_45095678/article/details/107529795
如对本文有疑问, 点击进行留言回复!!
【状压dp】[HDU1400 & poj2411] Mondriaan‘s Dream
网友评论