热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python的文件操作_Python文件操作

一、文件—永久保存数据我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,

一、文件—永久保存数据

我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。

二、Python文件操作介绍

下面会从文件的读写,以及修改去介绍python如何操作文件,首先先介绍,python的文件操作语法。

f = open('文件路径',mode = 'r',encoding='utf-8')

f.close()

常用语法如上,首先需要填写要操作文件的路径,然后选择mode(模式),常用的模式有r(读),w(写),r+(读写),w+(写读),

a(追加写),还有b模式(bytes模式)的读写方法

1、读模式(r)

在读模式前需要自己创建一个文件,然后找到路径以及确认文件的编码方式才能成功读到文件内容。下面以创建的文本,文件操作1.txt为例,路径为H:\文件操作1.txt 。文本内容如下:

f = open('H:\文件操作1.txt',mode='r',encoding='gbk')

g=f.read()print(g)

f.close()

如上所示,我们选择r,读模式,编码格式因为我们操作系统是gbk,所以我们将encoding设置为gbk

运行结果:

上面介绍的g.read(),是文件读的方法,read是将文本的中的字符串一次性全部读到内存然后赋值给变量,那么大家有没想过,如果文本大小有几个G甚至十几个G,你一次性将内容加载到内存,那么你的电脑内存一下就爆了。所以我们通常采用领一种方式。readline()方式进行读写。

首先我们手动将上述文本的内容增加至三行。

f = open('H:\文件操作1.txt',mode='r',encoding='gbk')print(f.readline())

f.close()

#运行结果:恭喜成功读到文件内容1 f= open('H:\文件操作1.txt',mode='r',encoding='gbk')print(f.readline())print(f.readline())

f.close()

#运行结果 恭喜成功读到文件内容1 恭喜成功读到文件内容2 f= open('H:\文件操作1.txt',mode='r',encoding='gbk')print(f.readline())print(f.readline())print(f.readline())

f.close()

#运行结果 恭喜成功读到文件内容1 恭喜成功读到文件内容2 恭喜成功读到文件内容3

可以发现这样我们每次f.readline都只读取文本中的每行内容。另外前面讲过字符串是可以迭代的,也就是可以使用for循坏。而文本的实质就是存储的字符串,所以文件内容也是可以循坏迭代的,而每次循坏的元素就是每一行的内容:

f = open('H:\文件操作1.txt',mode='r',encoding='gbk')for line inf:    #line 对应f中每一行的内容print(line)

f.close()

#运行结果: 恭喜成功读到文件内容1 恭喜成功读到文件内容2 恭喜成功读到文件内容3

细心的同学可以发现打印结果之间都空了一行,是因为文本中每行结尾是有个‘\n’换行符的,print本身也有也有换行符,所以打印出来导致了以上结果。这样我们每次加载到内存的文本内容都是固定一行,就不用担心内存问题了。

read.lines

read.lines模式是将文本的每一行作为列表的元素以列表的形式读取出来:

f = open('H:\文件操作1.txt',mode='r',encoding='gbk')print(f.readlines())

f.close()

#运行结果: ['恭喜成功读到文件内容1\n', '恭喜成功读到文件内容2\n', '恭喜成功读到文件内容3\n', '\n']

大家可以发现每个元素的结尾都是\n,也验证了前面用readline()为什么会空格一行的原因

2、'W'读模式

w模式:文件不存在则创建,存在则先删除再创建,。什么意思呢,也就是说我们选择w模式打开文件时,如果文件不存在,那么系统则会按照你所输入的文件路径和文件名自动创建该文件,否则就先删除源文件再创建文件。

f = open('H:\文件操作2.txt',mode='w',encoding='utf-8')

f.write('创建文本成功')

f.close()

可以看到文本操作2本来是没有的,是通过w模式根据你输入的路径和文件名创建,f.write()则是添加你要写入文本的内容,内容只能是字符串。

现在文本操作2已经存在,我们运行以下程序会出现什么情况:

f = open('H:\文件操作2.txt',mode='w',encoding='utf-8')

f.write('创建文本又成功啦')

f.close()

运行结果:

可以看见用w模式创建文件时,如果原文件存在,则会先删除原文件然后创建同名文件,内容会重新写入。



推荐阅读
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 2022年Python面试题一.Python基础二.企业面试题结束语🥇🥇🥇✅作者简介:大家好我是编程IDὌ ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • Visual Studio Code (VSCode) 是一款功能强大的源代码编辑器,支持多种编程语言,具备丰富的扩展生态。本文将详细介绍如何在 macOS 上安装、配置并使用 VSCode。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • 为什么python是动态类型语言_Python 3.7.0 面向对象的动态类型语言
    代表Python开发社区和Python3.7发布团队,我们很高兴地宣布https:www.python.orgdownloadsreleasepython-370 ... [详细]
  • 针对MySQL Undo空间满载及Oracle Undo表空间溢出的问题,本文详细探讨了其原因与解决策略。首先,通过启动SQL*Plus并以SYS用户身份登录数据库,查询当前数据库的UNDO表空间名称,确认当前状态。接着,分析导致Undo空间满载的常见原因,如长时间运行的事务、频繁的更新操作等,并提出相应的解决方案,包括调整Undo表空间大小、优化事务管理、定期清理历史数据等。最后,结合实际案例,提供具体的实施步骤和注意事项,帮助DBA有效应对这些问题。 ... [详细]
  • 详解 Python 的二元算术运算,为什么说减法只是语法糖?[Python常见问题]
    原题|UnravellingbinaryarithmeticoperationsinPython作者|BrettCannon译者|豌豆花下猫(“Python猫 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有