前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python基础——文件操作【文件编码、文件的打开与关闭操作、文件读写操作】

python基础——文件操作【文件编码、文件的打开与关闭操作、文件读写操作】

作者头像
用户11029137
发布2024-04-02 10:06:32
1270
发布2024-04-02 10:06:32
举报
文章被收录于专栏:编程学习编程学习

📝前言: 这篇文章主要讲解一下python中对于文件的基础操作: 1,文件编码 2,文件的打开与关闭操作 3,文件读写操作

🎬个人简介:努力学习ing 📋个人专栏:C语言入门基础以及python入门基础 🎀CSDN主页 愚润求学 🌄每日鸡汤:无问东西


一,文件编码

在学习文件操纵前,我们先来了解一下文件编码 什么是文件编码?

文件编码是指在计算机中存储和表示字符串的方法。它涉及字符集中的字符如何转换为二进制数,以及在读取或写入文件时如何将二进制数转换回字符集。 在 Python 中,当你使用 open() 函数打开文件时,可以指定文件的编码方式。常见的编码方式有:

‘utf-8’:这是 Python 的默认编码,可以表示地球上几乎所有的字符。 ●‘gbk’:这是用于简体中文的编码方式。 ●‘latin-1’:也称为 ISO-8859-1,可以表示大多数西方语言的字符。 … 等等。

注意:没有特殊情况,我们一般使用UTF-8的格式打开文件,使用不正确的编码可能会导致乱码或无法打开文件的问题。

二,文件的打开与关闭

1,open()函数

我们在对文件进行读写操作前,需要先试用open()函数打开文件 函数原型:

代码语言:javascript
复制
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

file: 这是一个必须的参数,表示要打开的文件名或文件模式。如果 file 是一个字符串,那么它表示的是要打开的文件名;如果 file 是一个整数,那么它表示的是文件模式。例如,0 表示以读模式打开,1 表示以写模式打开,2 表示以读写模式打开。 mode: 这是一个可选的参数,表示文件模式。默认值为 ‘r’,表示读模式。其他常见的模式还有 ‘w’(写模式)和 ‘a’(追加模式)。 buffering: 这是一个可选的参数,表示缓冲策略。默认值为 -1,表示使用系统默认的缓冲策略。如果设置为 0,则表示无缓冲;如果设置为 1,则表示有缓冲。 encoding: 这是一个可选的参数,表示文件的编码方式。例如,‘utf-8’、‘gbk’ 等。 errors: 这是一个可选的参数,表示在编码或解码时处理错误的方式。例如,‘strict’、‘ignore’、‘replace’ 等。 newline: 这是一个可选的参数,表示在文件中使用的换行符。例如,‘\n’、‘\r\n’ 等。 closefd: 这是一个可选的参数,表示是否在打开文件时关闭文件描述符。默认值为 True。 opener: 这是一个可选的参数,表示用于打开文件的函数。默认值为 None,表示使用内建的 open() 函数。

这个有点复杂了,但其实我们常用到的参数就'file'mode以及encoding,分别是指文件的路径文件的打开方式以及文件的编码方式(一般情况下使用UTF-8

示例一: (以只读的形式打开一个文件,返回的是一个文件对象):

代码语言:javascript
复制
f = open('file.txt','r',encoding='UTF-8')  #注意:encoding要关键字传参

我们还可以用使用 with 语句打开文件,可以确保文件在操作完成后自动关闭,避免资源泄露。 示例二:

代码语言:javascript
复制
# 以读模式打开文件
with open('file.txt', 'r') as f:
    content = f.read()

# 以写模式打开文件
with open('file.txt', 'w') as f:
    f.write('Hello, world!')

这个时候文件对象就是as后面的f

2,打开模式

在刚刚的例子中我们提到了’‘r’和’w’:读和写两种打开模式,下面我们将看看其他的模式,并具体介绍一下这些模式:

(此图片来源于知乎,如有侵权,请告知)
(此图片来源于知乎,如有侵权,请告知)

注意: 打开的文件不存在,python中的“w”功能就会创建新文件 打开的文件存在,"w"写入会覆盖原有内容(即把原有内容清空了,再写入)

3,路径的书写

斜杠(/)或双反斜杠(\)都可以用来表示路径分隔符。例如:C:\Users\username\Documents 为了确保代码的跨平台兼容性,建议使用斜杠(/)作为路径分隔符,这样可以同时在Windows、Linux和macOS上运行而无需修改。

4,文件的关闭

文件的关闭使用close(),示例:

代码语言:javascript
复制
f.close()

三,文件的读写操作

1,文件的读取

(1)read()

用于读取文件的所有内容,读取的内容以字符串的形式储存并返回 语法:

代码语言:javascript
复制
read(num)

num代表从文件中读取的字符串的长度,单位是字节,如果没有传入参数,则代表读取全部内容 例如:

代码语言:javascript
复制
with open("file.txt", "r") as file:
    content = file.read()

(注意: 如果有多个read读取,后面的read会从前一个read读取到的末尾开始读)

(2)readline()

用于读取文件中的一行,例如:

代码语言:javascript
复制
with open("file.txt", "r") as file:
    line = file.readline()
(3)readlines()

读取文件中的所有行(回车符也会被读取),然后每一行为一个元素,以列表的形式储存 例如:

代码语言:javascript
复制
with open("file.txt", "r") as file:
    lines = file.readlines()
(4)for循环读取

我们还可以用for循环来读取文件的每一行,得到的每一行都是字符串 例如:

代码语言:javascript
复制
with open("file.txt", "r") as file:
	for line in file:
	......

总结:

2,文件的写入

(1)write(content)

这个方法用于将内容写入文件。例如:

代码语言:javascript
复制
with open("file.txt", "w") as file:
    file.write("Hello, World!")
(2)writelines(lines)

这个方法用于将多行内容写入文件。例如:

代码语言:javascript
复制
with open("file.txt", "w") as file:
    file.writelines(["Hello", "\n", "World!"])

注意:我们调用上面两种方法写入的时候,内容并不会直接被写入文件里面,内容会被积攒在程序的内存中,即:缓存区 只有当我们调用flush()方法刷新内容的时候,内容才会出现在文件里 示例:

代码语言:javascript
复制
f = open("D:/test.txt", "w", encoding="UTF-8")
# write写入(原内容会被覆盖)
f.write("Hello World!")
# flush刷新
f.flush()

注意:close()方法自带flush()功能

(3)文件的追加

"a"模式:写入内容的时候,是在原来内容的后面追加 追加写入的函数和"w"一样,只是打开模式不同 示例:

代码语言:javascript
复制
f = open("D:/test.txt", "a", encoding="UTF-8")
# write写入(原内容不会被覆盖)
f.write("Hello World!")
# flush刷新
f.flush()

🌈我的分享也就到此结束啦🌈 要是我的分享也能对你的学习起到帮助,那简直是太酷啦! 若有不足,还请大家多多指正,我们一起学习交流! 📢公主,王子:点赞👍→收藏⭐→关注🔍 感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,文件编码
  • 二,文件的打开与关闭
    • 1,open()函数
      • 2,打开模式
        • 3,路径的书写
          • 4,文件的关闭
          • 三,文件的读写操作
            • 1,文件的读取
              • (1)read()
              • (2)readline()
              • (3)readlines()
              • (4)for循环读取
            • 2,文件的写入
              • (1)write(content)
              • (2)writelines(lines)
              • (3)文件的追加
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档