python文件操作

本文详细介绍了文件编码的重要性,包括UTF-8在全球范围内的使用,以及如何在Python中通过`open`函数进行文件的打开、读取、写入和追加操作,包括`read`,`write`,`flush`,和`a`模式的使用。
摘要由CSDN通过智能技术生成

1.文件编码

编码技术即翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容。

计算机中有许多可用编码: UTF-8 GBK Big5等等。

(我们可以使用系统自带的记事本,打开文件后,通过右下角即可看出文件的编码是什么)

其中,UTF-8是目前全球通用的编码格式,除非有特殊需求,否则,一律以UTF-8格式进行文件编码即可。

总结:计算机只认识0和1,所以需要将内容翻译成0和1才能保存在计算机中。 同时也需要编码, 将计算机保存的0和1,反向翻译回可以识别的内容。编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑。

2.文件的读取

Ⅰ.文件即操作系统管理磁盘数据的单位。

内存中存放的数据在计算机关机后就会消失,要长久保存数据,就要使用硬盘、光盘、U 盘等设备,为了便于数据的管理和检索,引入了“文件”的概念。一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名。

Ⅱ.文件的操作包含打开、读写和关闭。

①文件打开

在Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件:

open(name, mode, encoding)

其中,name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。

mode:设置打开文件的模式(访问模式):只读、写入、追加等。

encoding:编码格式(推荐使用UTF-8)

# 文件读取
f = open("C:\\Users\\藤原拓海のAE86\\Desktop\\choices\\夏令营&&预推免.txt", "r", encoding="UTF-8")
# open()这个内置函数的第三位参数并非encoding,故需要用关键字指定

print(type(f))

# 输出:<class '_io.TextIOWrapper'>

(补充:

在Python中,反斜杠 \ 是转义字符。它用于表示特殊字符或者在字符串中插入特殊字符。例如:

  • \n 表示换行符。
  • \t 表示制表符。
  • \\ 表示一个反斜杠字符本身。)

②文件读取

文件对象.read(num)

num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。

# 文件打开
f = open("C:\\Users\\藤原拓海のAE86\\Desktop\\choices\\夏令营&&预推免.txt", "r", encoding="UTF-8")
# open()这个内置函数的第三位参数并非encoding,故需要用关键字指定

print(type(f))

# 文件读取
print(f.read())

# 输出:关注浙大海洋学院、东南机械学院、重大机械学院、湖大机械学院。

读取文件全部行,并封装到列表中:

文件对象.readlines()
# 文件打开
f = open("C:\\Users\\藤原拓海のAE86\\Desktop\\choices\\夏令营&&预推免.txt", "r", encoding="UTF-8")
# open()这个内置函数的第三位参数并非encoding,故需要用关键字指定

print(type(f))

# 文件读取
# print(f.read())

lines = f.readlines()
print(type(lines))
print(lines)


#输出: ['关注浙大海洋学院、东南机械学院、重大机械学院、湖大机械学院。']

这里需要注意,在文件读取时存在类似指针的东西跟随读取进度移动,故此处必须注释掉print(f.read()),否则指针已经移动到末尾的情况下无法继续读取。

一次读取 一行内容:

文件对象.readline()
# 文件打开
f = open("C:\\Users\\藤原拓海のAE86\\Desktop\\choices\\夏令营&&预推免.txt", "r", encoding="UTF-8")
# open()这个内置函数的第三位参数并非encoding,故需要用关键字指定

print(type(f))

# 文件读取
# print(f.read())

# lines = f.readlines()
# print(type(lines))
# print(lines)

content = f.readline()
print(f'第一行:{content}')
content = f.readline()
print(f'第二行:{content}')

"""
输出:
第一行:关注浙大海洋学院、东南机械学院、重大机械学院、湖大机械学院。
第二行:
"""

 for循环读取文件行

# 文件打开
f = open("C:\\Users\\藤原拓海のAE86\\Desktop\\choices\\夏令营&&预推免.txt", "r", encoding="UTF-8")
# open()这个内置函数的第三位参数并非encoding,故需要用关键字指定

# for循环读取文件行
for line in f:
    print(line)

# 输出:关注浙大海洋学院、东南机械学院、重大机械学院、湖大机械学院。

 关闭文件对象

f.close()

最后通过close,关闭文件对象,也就是关闭对文件的占用,如果不调用close,同时程序没有停止运行,那么这个文件将一直被Python程序占用。被占用则意味着无法删除与修改,想必大家平时遇到过

值得一提的是,为了避免遗忘掉close方,可以通过在with open的语句块中对文件进行操作 ,在操作完成后自动关闭close文件。

with open("C:\\Users\\藤原拓海のAE86\\Desktop\\choices\\夏令营&&预推免.txt", "r", encoding="UTF-8") as f:
    

总结:

3.文件的写入

with open("C:\\Users\\藤原拓海のAE86\\Desktop\\读写文件.txt", 'w', encoding="UTF-8") as f:
    f.write("hello world")
    f.flush()

with open("C:\\Users\\藤原拓海のAE86\\Desktop\\读写文件.txt", 'r', encoding="UTF-8") as f:
    print(f.read())


# 输出:hello world

注意:

直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区

当调用flush的时候,内容会真正写入文件

这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘) 

close()方法,带有flush()方法的功能

对于写操作,文件如果不存在,使用”w”模式,会创建新文件;文件如果存在,使用”w”模式,会将原有内容清空。

4.文件的追加

with open("C:\\Users\\藤原拓海のAE86\\Desktop\\读写文件.txt", 'w', encoding="UTF-8") as f:
    f.write("hello world ")
    f.flush()

with open("C:\\Users\\藤原拓海のAE86\\Desktop\\读写文件.txt", 'a', encoding="UTF-8") as f:
    f.write('追加hello world')
    f.flush()

with open("C:\\Users\\藤原拓海のAE86\\Desktop\\读写文件.txt", 'r', encoding="UTF-8") as f:
    print(f.read())

# 输出:hello world 追加hello world

注意:

a模式,文件不存在会创建文件

a模式,文件存在会在最后,追加写入文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值