本篇是 Python 系列教程第 18 篇,更多内容敬请访问我的 Python 合集

1 打开文件

通常使用内置的 open(文件路径, 模式, encoding="utf-8")函数。

  • 文件路径:可以是相对路径或绝对路径。
  • 模式:(可选)决定了文件打开后如何处理文件。
  • encoding:(可选)编码方式。

常见的模式有:

  • 'r' (默认):只读模式,如果文件不存在,则会引发 FileNotFoundError。
  • 'w':写入模式,如果文件存在则会清空内容再写入,如果文件不存在则创建新文件。
  • 'a':追加模式,在文件末尾追加内容,如果文件不存在则创建新文件。
  • 'b':二进制模式,用于处理二进制文件(如图像、音频等)。
  • '+':更新模式,用于同时进行读写操作。

可以将这些模式组合起来使用,例如:

  • 'rb':以二进制模式读取文件。
  • 'wb':以二进制模式写入文件。
  • 'ab':以二进制模式追加内容到文件。
  • 'r+':读写模式,可以读取和写入文件。
  • 'w+':写入并读取模式,先写入后读取。
  • 'a+':追加并读取模式,先追加后读取。

2 文件读取

如果open()函数执行成功,会返回一个文件对象。后续可以对这个对象进行读取或写入操作。

f = open('./data.txt', 'r', encoding='utf-8')

文件对象有个read()方法,会一次性读取文件里的所有内容,并返回字符串格式。

实例:

file = open('data.txt', 'r', encoding="utf-8")
print(file.read())

注意:

  • 如果调用过read()后再次调用,会返回空,因为程序会记录文件被读取的位置,第一次read()时已经读到文件末尾,第二次read()后面就没有内容了。
  • 大文件也不适合用read(),因为会一次性读取文件的所有内容,可能挤爆内存。

上面说大文件不适合用read(),那有别的替换方案吗?当然有,解决方案就是一次性只读取部分内容,如:

  • read()传一个数字参数如read(1024),表示一次读多少字节,下次再调用read(1024)时就会继续从上次的结束位置读取。
  • 使用readline(),此方法一次只会读取一行内容,是根据换行符来判断本行结尾的,而且换行符也会被当做内容的一部分被读取。

上面的两种方式可搭配while循环来用,另外还有一个readlines()方法,会一次性返回所有行,组成一个字符串列表,一般搭配for循环使用。

3 文件写入

调用open()函数时第二个参数传wa就可以进行文件写入操作。这里说明一点,如果第二个参数是r,且文件不存在就会报FileNotFoundError错误,但是wa就不会报错,它会自动创建一个文件。

在打开或创建文件之后就可以调用文件对象的write()方法进行写入操作了。

示例:

with open('data.txt', 'w', encoding="utf-8") as file:
file.write("hello ")
file.write("python")

data.txt内容:

hello python

注意write()方法并不会自动换行,需要手动添加换行符,如把代码改成file.write("hello\n"),data.txt就会变成:

hello
python

如果我们使用w模式,文件就只能写入不能读取,如果我们想先读取再写入,可以用r+模式

4 关闭文件

文件操作完毕后,文件对象需要调用一个close()方法关闭文件释放资源。

每次文件操作完毕后都应该关闭文件,但是有可能会粗心忘记关闭,怎么办呢?我们可以在调用open()函数打开文件的时候使用with关键字,然后用as指定读取到的文件,这样在with代码块执行完后文件就会被自动关闭了,实例:

# 使用 with 语句来读取文件
with open('data.txt', 'r', encoding='utf-8') as file:
for line in file.readlines():
print(line.strip())

18 Python如何操作文件?的更多相关文章

  1. 在Python中操作文件之truncate()方法的使用教程

    在Python中操作文件之truncate()方法的使用教程 这篇文章主要介绍了在Python中操作文件之truncate()方法的使用教程,是Python入门学习中的基础知识,需要的朋友可以参考下 ...

  2. 字符编码和Python代码操作文件

    字符编码和Python代码操作文件 读写模式之a模式 # a模式 只追加模式 # 路径不存在:自动创建 with open(r'a.txt','a',encoding='utf8') as f: pa ...

  3. python 关于操作文件的相关模块(os,sys,shutil,subprocess,configparser)

    一:os模块 os模块提供了许多允许你程序与操作系统直接交互的功能 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname&quo ...

  4. python关于操作文件的相关模块(os,sys,shutil,subprocess,configparser)

    一:os模块 os模块提供了许多允许你程序与操作系统直接交互的功能 功能 说明 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirna ...

  5. python读写操作文件

    with open(xxx,'r,coding='utf-8') as f:   #打开文件赋值给F ,并且执行完了之后不需要 f.close(). 在Python 2.7 及以后,with又支持同时 ...

  6. Python open操作文件

    操作文件 # coding=utf-8 支持中文 """ China Japan France England """ f = open(& ...

  7. Python:操作文件

    python操作文件库不需要安装其他module,文件操作类库是python语言自身支持的操作. 判定文件是否存在:os.path.isfile(filePath) import os import ...

  8. python 基础 操作文件和目录

    获得当前目录路径 :os.getcwd() 返回指定目录下的所有文件和目录名:os.listdir() 删除一个文件:os.remove(filename) 删除多个空目录 :os.removefir ...

  9. Python之操作文件和目录

    Python内置的os模块可以直接调用操作系统提供的接口函数. # coding=utf-8 # 在指定目录以及指定目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径 import o ...

  10. python selenium 操作文件上传,并发操作时,文件选择窗口混乱解决方案

    上传文件 使用的是 python + autoit 模块,这种方式有一个问题,当出现多条任务同时选择文件上传的时候,无法判断那个文件选择窗口的归属,从而出现上传了错误的文件! 解决方法: 要上载文件而 ...

随机推荐

  1. Dotnet算法与数据结构:Hashset, List对比

    哈希集A 是存储唯一元素的集合.它通过在内部使用哈希表来实现这一点,该哈希表为基本操作(如添加.删除和包含)提供恒定时间平均复杂度 (O(1)).此外,不允许重复元素,使其成为唯一性至关重要的场景的理 ...

  2. 解决方案 | Claunch 如何更新配置文件

    1.问题 比如我的电脑上有Claunch 3.26版本(绿色版本),但是更新的时候如何保证我的新版本的图标.链接也更新是个问题. 官网说得比较模糊: 2.解决方法 打开复制data数据覆盖到新版本同样 ...

  3. 2024秋招西山居游戏开发SEED种子实习笔试题

    西山居游戏开发SEED种子实习 2024年秋招笔试题目,仅供参考,请大佬多多指教 选择题 逆波兰数,TCP,操作系统FIFO,C语言大小端 填空题 一道LUA脚本写结果,一道并发存储优化题,计算机系统 ...

  4. UE MultiLineTraceByChannel函数返回只有一个对象的问题

    问题描述 MultiLineTraceByChannel,看函数名字是返回射线检测到的所有对象,实际使用过程中,发现返回的数组中只又一个对象. Multi Line Trace by Channel ...

  5. CGI,FastCGI和PHP-FPM之间的关系和区别

    什么是CGI?早期的web server只可以处理简单的静态web文件,但是随着技术的发展出现动态语言如PHP,Python.PHP语言交给PHP解析器进行处理,但是处理之后如何和web server ...

  6. Langchain 与 LlamaIndex:LLM 应用开发框架的比较与使用建议

    Langchain 和 Llamaindex 是两种广泛使用的主流 LLM 应用开发框架.两者有什么不同?我们该如何使用?以下我根据各类资料和相关文档做了初步选型. 一.Langchain 1. 适用 ...

  7. 关于failed to load resource 问题的处理

    问题: c++做插件,写了一个native class,继承于ue的类ActorComponent,而蓝图里也继承了这个c++ class,都在插件里,每次打开的时候就有这个错误: 之前的解决办法,复 ...

  8. 倒装句&强调句

    倒装句 你[吃][胡萝卜]了吗? 吃胡萝卜了吗,[你]? 强调点不同 汉语常见于口语表达 英语则常见于书面用语 英语的语序是 主语 谓语(动词) 通常把谓语动词提前 1.完全倒装句 谓语部分完全放在主 ...

  9. TensorBoard标量图中的平滑曲线是如何做的平滑?—— tensorflow TensorBoard标量图中“平滑”参数背后的数学原理是什么?—— 指数移动平均(EMA)

    TensorFlow的tensorboard的平滑曲线的实现代码: 使用"指数移动平均"技术实现. 地址: https://github.com/tensorflow/tensor ...

  10. git 如何删除一个文件名为nul的文件

    前提 当我发现存在一个nul的文件,手动删除/移动它,都会提示ms-dos功能无效或文件过大.想一想这个nul应该是某个保留字,所以普通的方式不能删除 解决方案 https://stackoverfl ...