文件:这里的文件其实指的的是计算机文件。它以计算机的的硬盘为载体,是存储在硬盘中的信息集合,可以包含任何的数据内容。通俗的说,文件是数据的集合和抽象。

一.文件的类型

文件包括 文本文件 和 二进制文件 两种类型。

文本文件:

文本文件一般由单一特定编码的字符组成,如: UTF-8 编码,内容容易统一展示和阅读。由于文本文件存在编码,所以,它也可以被看作是存储在磁盘上的长字符串,如: .txt 格式的文本文件。

二进制文件:

二进制文件直接由 比特0 和 比特1 组成,没有统一的字符编码,文件内部数据的组织格式与文件用途有关。(如:图⽚ mp3 视频…)

值得一提的是:相对于文本文件,二进制文件由于没有统一的字符编码,只能当做作字节流,而不能看作是字符串。

二.文件的打开(open())

我们通过open()函数来进行文件的打开操作,一般我们会将打开的文件通过一个变量进行接收。

语法格式如下;

= open(,)

显而易见,open()函数中有很多的参数,而我们现在做的,就是简单讲解第一个参数 file 。

在说 file 参数之前,我们先简单了解一下绝对路径和相对路径。

1.绝对路径与相对路径

绝对路径:文件存储在硬盘上的真正路径

相对路径:相对于当前文件的路径

这么说,可能还不够明了,相信通过举例说明,你就会get了。

2.文件的打开

要打开的文件

python怎么打开同一路径下的文件_python文件式启动举例

python怎么打开同一路径下的文件_文本文件_02

打开方式

# 相对路径(相对于当前文件的路径)

# 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怎么打开同一路径下的文件_二进制文件_03

对于绝对路径的路径书写,建议在绝对路径前面加上 r (原始字符串)。

原始字符串r 的作用:告诉计算机当前的字符串是原始文本(而不是转义后的文本)。

注意:当我们获取了文件对象时,所有的操作都是通过文件对象进行操作的。

3.文件的打开模式

这是python官方帮助文档中关于文件打开模式的说明

python怎么打开同一路径下的文件_字符串_04

打开模式

含义

‘r’

只读模式(默认)

‘w’

打开文件后进行 覆盖 写入 ,如果文件不存在,则进行创建;如果文件内有内容,则覆盖原文件(内容)

‘x’

创建写模式,如果文件存在,则返回异常

‘a’

追加写模式,如果文件不存在则进行创建,如果文件存在则在原文件最后追加内容

‘b’

二进制文件模式

‘t’

文本文件模式,默认值

‘+’

在原功能( ‘r’、‘w’、‘x’、‘b’ )基础上增加读写功能

三.文件的关闭(close())

1.close()

# 文件的关闭(close())

file_name = 'demo.txt'

a = open(file_name)

print(a.read())

a.close()

python怎么打开同一路径下的文件_二进制文件_05

对于文件是否真的关闭,我们可以进行再次的读取来验证

# 文件的关闭(close())

file_name = 'demo.txt'

a = open(file_name)

print(a.read())

a.close()

# 我们都知道,我们是无法在不打开文件的情况下对文件记性读取的

print(a.read())

python怎么打开同一路径下的文件_python文件式启动举例_06

文件的关闭是为了保持计算机的性能(释放资源)。

2.with…as… 用句

如果你在打开文件时忘记关闭文件,那么你可以使用 with…as… 用句 来进行代码的编写。因为使用该语句可以进行文件的自动关闭。

# 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.

python怎么打开同一路径下的文件_python怎么打开同一路径下的文件_07

四.文件的读写

1.文件的读取

我们在之前已经说了,文件的类型分为文本文件和二进制文件。当使用open()函数打开文件时,默认是以⽂本⽂件的形式打开的, encoding = None 所以处理⽂本⽂件时要指定编码。

(1).文件的读取方法

方法

含义

.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)

python怎么打开同一路径下的文件_文本文件_08

由上图我们可以看到read()函数中有一个 size参数 ,而且 默认size = -1 针对于size参数,当size的值为-1,或者省略时,将读取或返回文件的全部内容;否则,最多读取并返回 size大小的字符(在文本模式下)或size大小的字节(在二进制模式下)。如果已到达文件末尾,将返回一个空字符串()。

python怎么打开同一路径下的文件_python文件式启动举例_09

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()

python怎么打开同一路径下的文件_python怎么打开同一路径下的文件_10

我们通过 size参数 来进行固定文件长度的读取,每一次读取都是从上一次读取的位置来读取。如果剩余字符的数量小于size,则一下读取剩余的所有内容。

针对文件比较大的话,可以进行固定字节的读取,通过while循环语句进行。

# 文件的读取

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

python怎么打开同一路径下的文件_字符串_11

下面进行 readline() 和 readlines() 的举例

# 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)

python怎么打开同一路径下的文件_python怎么打开同一路径下的文件_12

2.文件的写入

(1).文件写入方法

方法

含义

.write(s)

向文件中写入内容(字符串或字节流)

.writelines(lines)

将一个元素作为字符串列表的整体写入文件

(2).文本文件的写入

# 文件的写入

file_name = 'demo01.txt'

a = open(file_name,'w',encoding='utf-8')

a.write('畏惧信仰,畏惧力量!\n')

a.write('奥利给\n')

a.close()

python怎么打开同一路径下的文件_文本文件_13

我们通过 ‘w’ ,进行文件的创建,并使用 read() 函数将一些内容写进去。因为是汉字,所以采用了 utf-8 的编码格式。

python怎么打开同一路径下的文件_二进制文件_14

由上图可得,我们成功进行文件的写入。

如果要读取的文件存在,使用 ‘w’ 进行覆盖写,文件内容被覆盖。

# 如果要读取的文件存在,使用'w'进行覆盖写,文件内容被覆盖

file_name = 'demo01.txt'

a = open(file_name,'w',encoding='utf-8')

a.write('王牌飞行员申请出战!\n')

python怎么打开同一路径下的文件_文本文件_15

python怎么打开同一路径下的文件_文本文件_16

由上图可得,我们对原来的文件内容进行了内容的覆盖。

如果你不想覆盖,可以使用 ‘a’ 进行文件的追加

# 如果你不想覆盖,可以使用'a'进行文件的追加

file_name = 'demo01.txt'

a = open(file_name,'a',encoding='utf-8')

a.write('你买单,我就来\n')

a.write('蒙多说你是个...')

python怎么打开同一路径下的文件_字符串_17

python怎么打开同一路径下的文件_python文件式启动举例_18

(3).二进制文件的写入

示例文件:

python怎么打开同一路径下的文件_二进制文件_19

# 二进制文件操作

# 通过'rb'模式来进行二进制文件的读取。

file_name = r'C:\Users\Asus\Desktop\昼夜 - 童话镇 (钢琴版).mp3'

with open(file_name,'rb') as a:

print(a.read(100))

其中的 a.read(100) 表示读取大小为100字节。

python怎么打开同一路径下的文件_字符串_20

通过 ‘wb’ 模式进行二进制文件的写入

# 通过'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)

python怎么打开同一路径下的文件_二进制文件_21

我们通过拷贝 昼夜 - 童话镇 (钢琴版).mp3 中的字节流,并将文本内容读写到新创建的文件 tonghua.mp3 中。

python怎么打开同一路径下的文件_python怎么打开同一路径下的文件_22

新创建的文件 tonghua.mp3 成功打开。

python怎么打开同一路径下的文件_二进制文件_23