Python:文件操作详细教程

简介: Python:文件操作详细教程

文件操作示例分析:

文件操作一般要经历三个步骤:

  1. 打开文件
  2. 操作文件
  3. 关闭文件

读取操作示例:

>>>f = open('test.txt', 'r')          # 打开文件test.txt, r表示只读,文件不存在则报错
>>>f.read()                           # 文件打开后,read()方法将文件内容读到内存中
'123432'                              # 获取的内容是一个字符串
>>>f.close()                          # 文件使用完必须关闭,打开文件占用资源

打开文件:文件句柄 = file('文件路径',‘模式’)

备注:Python中打开文件有两种方式,即open()和file(),本质上前者会调用后者进行文件操作,推荐使用open

上诉,方式中,每次打开一个文件操作完成后,都要手动关闭文件,操作繁琐,易忘。推荐一种更加简便的操作方式:with语句, 这种语句帮助我们自动完成f.close() 这一步操作。

with open('test.txt', 'r') as f:
    file = f.read()
    print(type(file))
    pirint(file)

# 输出结果
<class'str'>  # 取出的内容还是字符串
123432       # 虽然没有看到引号,但还是字符串
----------------------------------------------------------------------
# with 语句的多文件同时处理
# Python2.7版本之后,with 支持同事打开多个文件
with open('db1','r') as f1, open('db2', 'r') as f2:
    pass

-----------------------------------------------------------------------

# 一个文件读取一行处理一行然后写入另一个文件一行
with open('db1', 'r', encoding="utf-8") as f1, open('db2', 'w', encoding="utf-8") as f2:
    for line in f1:
        new_str = line.replace('abc', "st")
        f2.write(new_str)

写入文件示例:

with open('test.txt', 'a+') as f:
    f.write('hello world')

备注:所有的文件操作,如果文件没有写绝对路径,默认路径为程序所在路径,文件操作要注意操作文件的存在性。

文件操作权限:

r   # 以只读的方式打开文件,文件的指针放在文件的开头,默认方式
r+  # 以读写模式打开,和追加效果一样,但是如果文件不存在,不会像a一样创建文件,而是报错
rb  # 以二进制格式打开一个文件用于只读,文件指针将会放在文件的开头,这是默认模式
rb+ # 以二进制格式打开一个文件用于读写,文件指针放在文件的开头
w   # 替换重写(覆盖写入)
w+  # 以读写模式打开文件,如果该文件已经存在则将其内容覆盖,文件不存在则创建文件
wb  # 以二进制格式打开一个文件只用于写入,如果该文件已经存在则将其内容覆盖,文件不存在则创建文件
wb+ # 以二进制格式打开一个文件用于读写, 如果该文件已经存在则将其内容覆盖,文件不存在则创建文件
a   # 在原文件的基础上,追加写入,文件指针放在文件结尾,如果文件不存在,则创建新文件进行写入
a+  # 打开一个文件用于读写,如果文件已经存在,文件指针放在文件结尾。文件打开时是追加模式,如果文件不存在则创建文件用于读写
ab  # 以二进制格式打开一个文件,如果文件存在,文件指针放在文件结尾,文件不存在则创建新文件并进行写入
ab+ # 以二进制格式打开一个文件用于追加,如果文件存在,文件指针放在文件结尾,文件不存在则创建新文件用于读写
b   # 二进制文件,主要用于跨平台,来解决windows和linux的回车换行区别,按照字节
x   # python3中添加,如果文件存在则报错,不存在则创建并写入内容

文件其他方法:

f.mode      # 显示文件打开格式
f.flush()   # 把缓冲区中的数据刷到硬盘,当你往文件里写数据时,python会先把你写的内容写到缓冲区,等缓冲区满了再统一自动写入硬盘,因此减少了对硬盘的操作次数,毕竟硬盘的速度比内存慢得多
f.read()      # 把文件一次性读入内存
f.read(szie)  # 一次读取指定大小的文件
f.readline()  # 读取一行文件
f.readlines() # 把文件都读入内存,并且每行转成列表中的一个元素
f.tell()      # 显示程序光标所在该文件中的当前的位置,位置是以字节来算的
f.seek()      # 跳到指定位置,f.seek(0) 是返回文件开始,位置是以字节来算的
f.truncate()   # f.truncate(10) 从文件开头截取10个字符,超出的都删除
f.writelines() # 参数需为一个列表,将一个列表中的每一个元素都写入文件
f.xreadlines() # 以迭代的形式循环文件,在处理大文件时效率极高,只记录文件开头和结尾,每循环一次,只读一行,因此不需要将整个文件都一次性加载到内存,而如果用readlines(),则需要将整个文件都加载到内存,处理大文件不合适。
f.next()       # 获取下一行数据,不存在,则报错

文件对象的属性


file.closed       # 返回True如果文件已经关闭,否则返回False
file.mode        # 返回被打开文件的访问模式
file.name        #  返回文件的名称
file.softspace  # 如果用print输出后,必须跟一个空格符,则返回False ,否则返回True

文件读取选择:

  • 文件很小,read() 最方便
  • 不确定文件大小,反复调用read(size) 安全
  • 如果是配置文件,调用readlines() 最方便

操作系统中文件操作

import os    # python中的文件操作需要导入os模块
os.rename( current_file_name, new_file_name)   # 文件重命名
os.remove( file_name )   # 删除文件
os.mkdir( "test")            # 创建一个目录test
os.chdir( "newdir" )        # 切换目录到newdir
os.getcwd()                   # 获取当前目录的路径
os.rmdir( "dirname" )     # 删除目录,在删除目录前,它的所有内容应该先被清除
相关文章
|
23天前
|
JSON 数据可视化 API
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
|
2天前
|
大数据 开发者 C++
Python语法糖详解教程
《Python语法糖详解教程》介绍了编程语言中的“语法糖”,即通过特殊语法形式简化代码,使代码更简洁、易读和高效。文章详细解析了列表推导式、字典推导式、元组解包、条件表达式、with语句和装饰器等核心语法糖,并提供了具体示例和最佳实践指南。通过这些技巧,开发者可以在保持底层功能不变的前提下,显著提升开发效率和代码质量。
20 8
|
2月前
|
IDE 测试技术 项目管理
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
PyCharm是由JetBrains开发的Python集成开发环境(IDE),专为Python开发者设计,支持Web开发、调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试和版本控制等功能。它有专业版、教育版和社区版三个版本,其中社区版免费且适合个人和小型团队使用,包含基本的Python开发功能。安装PyCharm前需先安装Python解释器,并配置环境变量。通过简单的步骤即可在PyCharm中创建并运行Python项目,如输出“Hello World”。
295 13
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
|
5天前
|
C语言 Python
Python学习:内建属性、内建函数的教程
本文介绍了Python中的内建属性和内建函数。内建属性包括`__init__`、`__new__`、`__class__`等,通过`dir()`函数可以查看类的所有内建属性。内建函数如`range`、`map`、`filter`、`reduce`和`sorted`等,分别用于生成序列、映射操作、过滤操作、累积计算和排序。其中,`reduce`在Python 3中需从`functools`模块导入。示例代码展示了这些特性和函数的具体用法及注意事项。
|
3月前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
99 8
|
3月前
Seaborn 教程-主题(Theme)
Seaborn 教程-主题(Theme)
163 7
|
3月前
|
Python
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
59 4
|
3月前
|
数据可视化 Python
Seaborn 教程
Seaborn 教程
66 5
|
4月前
|
Python
SciPy 教程 之 Scipy 显著性检验 9
SciPy 教程之 Scipy 显著性检验第9部分,介绍了显著性检验的基本概念、作用及原理,通过样本信息判断假设是否成立。着重讲解了使用scipy.stats模块进行显著性检验的方法,包括正态性检验中的偏度和峰度计算,以及如何利用normaltest()函数评估数据是否符合正态分布。示例代码展示了如何计算一组随机数的偏度和峰度。
48 1
|
4月前
|
BI Python
SciPy 教程 之 Scipy 显著性检验 8
本教程介绍SciPy中显著性检验的应用,包括如何利用scipy.stats模块进行显著性检验,以判断样本与总体假设间的差异是否显著。通过示例代码展示了如何使用describe()函数获取数组的统计描述信息,如观测次数、最小最大值、均值、方差等。
49 1

热门文章

最新文章