Python中的文件处理

读文件

步骤:1.打开文件;2.读取文件内容;3.关闭文件

打开文件

格式为:open(path, flags[, encoding][,errors] ):
path: 要打开文件的路径,
flags:文件的打开方式。
文件的打开方式主要有以下的几种:
‘r’ 以只读的方式打开文件,文件的描述符放在文件的开头。
‘rb’ 以二进制格式打开一个文件用于只读,文件的描述符放在文件的开头。
‘r+’ 打开一个文件用于读写,文件的描述符放在文件的开头。
‘w’ 打开一个文件只用于写入,若该文件已经存在则覆盖,若不存在则创建一个新的文件。
‘wb’ 打开一个文件只用于写入二进制,若该文件已存在则覆盖,若不存在则创建新文件。
‘w+’ 打开一个文件用于读写。
‘a’ 打开一个文件用于追加,若文件存在,文件描述符将会被放到文件的末尾。
‘a+’ 打开一个文件用于读写,若文件存在,文件描述符将会被放到文件的末尾。
encoding: 编码方式,常用的是utf-8和gbk。
errors: 错误处理。
举例说明:

path = r"E:\xxxx\xxxx\Python\Python入门\xxx.txt"
# ignore 忽略错误
# f = open(path,"r",encoding="utf-8",errors="ignore")
f = open(path,"r",encoding="utf-8")

读取文件内容

1.读取文件的全部内容

str1 = f.read()
print(str1)

2.读取指定的字符数

str2 = f.read(10)
print(str2)
str3 = f.readline(10)
print(str3)

3.读取整行,包括”\n”字符

str4 = f.readline()
print(str4)

4.读取所有行,并返回一个列表

list1 = f.readlines() print(list1)

5.若给定的数字大于0,返回实际size字节的行数

list2 = f.readlines(20) print(list2)

关闭文件

f.close()

读文件的完整过程

1.使用try和finally的方式:

try:
    f1 = open(path, "r", encoding="utf-8")
    print(f1.read())
finally:
    if f1:
        f1.close()

2.最为简便的读文件方式:

with open(path, "r", encoding="utf-8") as f2:
    print(f2.read())

写文件

# 设置写入文件的路径:
path = r"E:\xxx\xxxx\Python\Python入门\写文件.txt"
f = open(path, "w", encoding="utf-8")

# 1.将信息写入缓冲区
f.write("Python是一种解释型的语言,在开发过程中没有了编译这个环节,类似于PHP和Perl语言。")

# 2.刷新缓冲区
# 直接将内部缓冲区的数据立刻写入文件,而不是被动的等待自动刷新缓冲区写入
f.flush()

# 关闭文件
f.close()

一种简便的写文件方式

with open(path, "a", encoding="utf-8") as f3:
    f3.write("\nPython是一种交互式的语言,可以在一个Python提示符中,直接互动执行程序。")

输出结果为:

Python是一种解释型的语言,在开发过程中没有了编译这个环节,类似于PHP和Perl语言。
Python是一种交互式的语言,可以在一个Python提示符中,直接互动执行程序。

二进制文件的编码和解码

# 设置文件路径
path = r"E:\xxx\xxx\Python\Python入门\\编码.txt"

# 编码
with open(path, "wb") as f4:
    str2 = "Python是一种解释型、面向对象、动态数据类型的高级程序设计语言"
    f4.write(str2.encode("utf-8"))

# 解码
with open(path, "rb") as f5:
    data = f5.read().decode("utf-8")
    print(data)
全部评论

相关推荐

04-07 20:46
宁夏大学 Java
一个轮子项目一个苍穹外卖,外卖项目包装成其他的,但是技术点都没变,不知道这样可行不可行。有没有好心人帮我提点建议啊
拿铁不coding:找实习微服务可不学,mq大致场景要了解,但不学问题也不大。我没写在简历上,也没咋问。重点还是mysql redis Java的八股,我根据真实面经整理得到的最全(高/中/低频)面试题,需要的牛u可以订阅一手我的专栏,祝好运
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务