Python文件操作和管理指南:打开、读取、写入和管理文件

2023-11-14

文件(File)

通过Python程序来对计算机中的各种文件进行增删改查的操作

I/O(Input / Output)

操作文件的步骤:

  1. 打开文件
  2. 对文件进行各种操作(读、写),然后保存
  3. 关闭文件

打开文件

file_name = 'demo.txt'
file_obj = open(file_name)
print(file_obj)

提示:此处输出的是文件对象的信息。

使用 with … as 语句打开文件

file_name = 'hello'

try:
    with open(file_name) as file_obj :
        print(file_obj.read())
except FileNotFoundError:
    print(f'{file_name} 文件不存在~~')

提示:with … as 语句可以在代码块结束时自动关闭文件。

读取文件内容

file_name = 'demo2.txt'

try:
    with open(file_name, encoding='utf-8') as file_obj:
        content = file_obj.read()
        print(content)
except FileNotFoundError:
    print(f'{file_name} 这个文件不存在!')

# 或者逐行读取文件内容

file_name = 'demo.txt'

try:
    with open(file_name, encoding='utf-8') as file_obj:
        for line in file_obj:
            print(line)
except FileNotFoundError:
    print(f'{file_name} 这个文件不存在!')

读取大文件的方式

file_name = 'demo.txt'

try:
    with open(file_name, encoding='utf-8') as file_obj:
        file_content = ''
        chunk = 100
        while True:
            content = file_obj.read(chunk)
            if not content:
                break
            file_content += content

except FileNotFoundError:
    print(f'{file_name} 这个文件不存在!')

print(file_content)

提示:对于较大的文件,使用循环读取内容,避免一次读取全部内容导致内存泄漏。

逐行读取和读取全部行

import pprint
import os

file_name = 'demo.txt'

with open(file_name, encoding='utf-8') as file_obj:
    for line in file_obj:
        print(line)

或者使用 readline()readlines() 方法:

with open(file_name, encoding='utf-8') as file_obj:
    print(file_obj.readline(), end='')
    print(file_obj.readline())
    print(file_obj.readline())

# 或者

with open(file_name, encoding='utf-8') as file_obj:
    r = file_obj.readlines()
    pprint.pprint(r[0])
    pprint.pprint(r[1])
    pprint.pprint(r[2])

写文件操作

首先我们需要使用 open() 函数打开一个文件并进行操作,之后用 write() 方法向文件中写入内容。

file_name = 'demo5.txt'
with open(file_name , 'x' , encoding='utf-8') as file_obj:
    file_obj.write('aaa\n')
    file_obj.write('bbb\n')
    file_obj.write('ccc\n')
    r = file_obj.write(str(123)+'123123\n')
    r = file_obj.write('今天天气真不错')
    print(r)

文件定位

seek()

seek() 函数用于修改文件读取位置,需要两个参数:

  • 要切换到的位置
  • 计算该位置的方式

该函数有三种计算位置方式:

  • 0 从头计算,默认值
  • 1 从当前位置计算
  • 2 从最后位置开始计算
with open('demo2.txt','rt' , encoding='utf-8') as file_obj:
    file_obj.seek(9)
    print(file_obj.read())
    print('当前读取到了 -->',file_obj.tell())

tell()

使用 tell() 函数查看当前读取的位置。

with open('demo2.txt','rt' , encoding='utf-8') as file_obj:
    file_obj.seek(9)
    print(file_obj.read())
    print('当前读取到了 -->',file_obj.tell())

关闭文件

关闭文件是非常重要的操作,它可以释放操作系统资源并确保文件在使用完毕后被正确关闭。

在 Python 中有几种关闭文件的方法:

  1. 使用 close() 方法:可以直接调用文件对象的 close() 方法来关闭文件。
f = open('filename.txt')
# 使用文件对象进行读写操作
f.close()  # 关闭文件
  1. 使用 with 语句:with 语句会在代码块执行完毕后自动关闭文件,即使发生异常也会正常关闭文件。
with open('filename.txt') as f:
    # 使用文件对象进行读写操作
    # 不需要手动调用 close() 方法来关闭文件

无论使用哪种方式,关闭文件都是一个良好的编程习惯。这样可以避免文件句柄泄漏和资源浪费。

另外,还有一些需要注意的事项:

  • 在使用 with 语句时,不需要手动调用 close() 方法关闭文件。
  • 在使用 close() 方法关闭文件时,要确保在文件操作完成后再关闭文件,避免在文件操作期间关闭文件导致错误。
  • 如果在文件操作期间发生了异常,并且没有正确处理或关闭文件,那么可能会出现文件未关闭的情况。因此,使用 with 语句能更好地处理这种情况。
  • 出于性能考虑,Python 解释器在某些情况下可能会延迟关闭文件。但是,为了保持良好的编程习惯,我们应该始终在使用完文件后主动关闭它们。

总之,关闭文件是一种好的编程习惯,可以确保文件和系统资源的正确释放。建议在代码中始终养成关闭文件的习惯,特别是当文件操作较为复杂或需要长时间打开文件时。

文件管理

使用 os 模块可以进行文件和目录的管理操作。

获取目录结构

使用 os.listdir() 函数获取指定目录下的目录结构。

import os

r = os.listdir()
print(r)

获取当前目录

使用 os.getcwd() 函数获取当前所在的目录。

import os

r = os.getcwd()
print(r)

切换当前所在目录

使用 os.chdir() 函数切换当前所在目录,相当于 cd 命令。

import os

os.chdir('c:/')
r = os.getcwd()
print(r)

创建目录

使用 os.mkdir() 函数在指定路径下创建新的目录。

import os

os.mkdir("aaa")

删除目录

使用 os.rmdir() 函数删除指定路径下的空目录。

import os

os.rmdir('abc')

删除文件

使用 os.remove() 函数删除指定路径下的文件。

os.remove('aa.txt')

重命名文件

使用 os.rename() 函数重命名指定路径下的文件或移动文件。

os.rename('aa.txt','bb.txt')
os.rename('bb.txt','c:/users/lilichao/desktop/bb.txt')

总结

本文介绍了Python中文件的操作和管理。首先,我们学习了如何打开文件,包括使用open()函数和with ... as语句打开文件,在操作完成后正确关闭文件是一个良好的编程习惯。然后,我们讨论了如何读取文件的内容,包括读取整个文件和逐行读取文件。对于大型文件,我们介绍了一种逐块读取文件的方式以避免内存问题。接下来,我们学习了如何进行文件的写操作,包括写入新文件和追加内容到已有文件。我们还研究了文件定位的两个重要方法:seek()tell(),它们可以用来控制和获取文件当前的位置。在文件管理方面,我们了解了如何获取目录结构、获取当前目录、切换当前目录、创建目录、删除目录以及删除和重命名文件。这些文件操作和管理的知识对于日常的文件处理任务非常重要,也是程序员必备的技能。

通过学习本文,读者可以掌握文件操作和管理的基本技巧,能够安全地读取和写入文件,并且能够进行简单的文件和目录管理操作。这将为日常的文件处理需求提供帮助,并提升代码的可读性和可维护性。同时,了解文件操作和管理的基本原理,可以为进一步学习更高级的文件操作和管理技术打下坚实的基础。让我们在Python编程中更加熟练地处理文件!

本文到此结束,谢谢观看!


python精品专栏推荐

python基础知识(0基础入门)

【python基础知识】0.print()函数
【python基础知识】1.数据类型、数据应用、数据转换
【python基础知识】2.if条件判断与条件嵌套
【python基础知识】3.input()函数
【python基础知识】4.列表和字典
【python基础知识】5.for循环和while循环
【python基础知识】6.布尔值和四种语句(break、continue、pass、else)
【python基础知识】7.实操-用Python实现“文字PK”小游戏(一)
【python基础知识】7.实操-用Python实现“文字PK”小游戏(二)
【python基础知识】8.编程思维:如何解决问题-思维篇
【python基础知识】9.函数的定义和调用
【python基础知识】10.用函数编写程序 - 实操篇
【python基础知识】10.用Python实现石头剪刀布小游戏-函数实操篇
【python基础知识】11.如何debug -常见报错原因及排查思路 - 思维篇
【python基础知识】12.类与对象(一)
【python基础知识】12.类与对象(二)
【python基础知识】13.类与对象(三)
【python基础知识】13.类与对象(四)
【python基础知识】14.图书管理系统的搭建(类与对象实操)
【python基础知识】15.编码基础知识
【python基础知识】16.文件读写基础及操作
【python基础知识】16.“古诗默写题”的python实现(文件读写和编码-实操篇)
【python基础知识】17.模块的概念以及如何引入
【python基础知识】18.实操-使用python自动群发邮件
【python基础知识】19.产品思维以及流程图的使用 - 思维篇
【python基础知识】20.“午饭吃什么”的python实现(产品思维-实操篇)
【python基础知识】21.高效偷懒的正确打开方式-毕业篇
【python文件处理】CSV文件的读取、处理、写入
【python文件处理】Excel自动处理(使用 openpyxl)
【python文件处理】-excel格式处理


python爬虫知识

【python爬虫】1.爬虫基础知识
【python爬虫】2.网页基础知识
【python爬虫】3.爬虫初体验(BeautifulSoup解析)
【python爬虫】4.爬虫实操(菜品爬取)
【python爬虫】5.爬虫实操(歌词爬取)
【python爬虫】6.爬虫实操(带参数请求数据)
【python爬虫】7.爬到的数据存到哪里?
【python爬虫】8.温故而知新
【python爬虫】9.带着小饼干登录(cookies)
【python爬虫】10.指挥浏览器自动工作(selenium)
【python爬虫】11.让爬虫按时向你汇报
【python爬虫】12.建立你的爬虫大军
【python爬虫】13.吃什么不会胖(爬虫实操练习)
【python爬虫】14.Scrapy框架讲解
【python爬虫】15.Scrapy框架实战(热门职位爬取)
【python爬虫】16.爬虫知识点总结复习

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python文件操作和管理指南:打开、读取、写入和管理文件 的相关文章

  • (六)文件管理

    文件管理的试题比较多 xff0c 主要就是模拟操作系统中的 建立文件 打开文件 读文件 写文件 关闭文件 删除文件 建立目录 显示目录内容 显示文件内容 改变文件属性等操作 大家可以参考书本253页的上机指导 北大2001年试题 xff1a
  • 文件管理

    彩蛋 操作系统总目录 戳我 文章目录 1 初始文件管理2 文件的逻辑结构无结构文件有结构文件顺序文件是否可以实现记录的随机存取变长记录定长记录 索引文件索引顺序文件多级索引顺序文件 3 文件目录文件控制块需要对目录进行哪些操作 目录结构单级
  • IOS文件管理

    IOS文件管理 1 沙盒机制 xff1a IOS应用程序只能对自己创建的文件系统读取文件 xff0c 这个独立 封闭 安全的空间就叫做沙盒 它可以存储程序包文件 xff08 可执行文件 xff09 图片 音频 视频 plist文件 sqli
  • C++文件读写

    这个不错 xff1a C 43 43 文件读写详解 xff08 ofstream ifstream fstream xff09 C 43 43 文件读写详解 xff08 ofstream ifstream fstream xff09 c 4
  • C语言 文件读写

    目录 1 文件打开与关闭1 1 打开文件 fopen 1 2 关闭文件 fclose 2 读取文件2 1 fgetc 2 2 fgets 2 3 fscanf 3 写入文件3 1 fputc 3 2 fputs 3 3 fprintf 1
  • C++ 文件读写fopen_s/fopen

    最好使用fopen s xff0c 使用fopen提示 not safe xff0c 二者区别如下 xff1a 1 fopen s的安全是在于比函数fopen多了溢出检测 2 在使用上 xff0c 函数fopen的返回值是文件指针 xff0
  • 1.16 I/O文件的读、写操作(open方式打开文件)

    存在一个hello txt文件 内容如下截图 打开文件的语句是 file open file name access mode file name代表文件名 文件的全路径 access mode代表打开文件的模式 文件各个模式如下 一 文件
  • windows下调用系统API实现进程创建和文件读写

    题目要求 有一个文本文件CommandList txt 第一行是说明文字 本文件最后一次打开和运行日期是20150407 第二行开始每行是一个可执行程序的名称 含路径 编写一个应用程序能打开该文件 并顺序执行其中的每个程序 并更新文件第一行
  • O-RAN专题系列-42:管理面-WG4.MP.V07-规范解读-第9章-文件管理

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122588292 目录 第9章 Fil
  • 判断文件的几种方法及其优劣对比

    目录 一 懒人的try语句 二 传统的os模块 三 时尚的pathlib模块 四 几种方法优劣对比 我们知道当 件不存在的时候 open 法的写模式与追加模式都会新建 件 但是对 件进 判 我们之前学过 要 with语句来处理 件读写 但w
  • C语言-从txt文件中读取数据,忽略换行及回车

    long file size char filename FILE fp fopen filename r if fp return 1 fseek fp 0L SEEK END long size ftell fp fclose fp r
  • C#学习笔记 文件操作

    获得文件和文件夹信息 NET管理文件和文件夹信息的类有如下几个 Directory和File类是两个静态类 可以静态地获取文件和文件夹的信息而无需实例化对象 这在只对某个文件或者文件夹执行一次操作的时候是很有用的 Path也是一个静态类 为
  • 搜索神器Everything的功能技巧(非NTFS文件搜索,FTP/HTTP服务)

    Everything这个搜索神器估计大家都听过 磁盘上的任何文件只要输入后基本就是秒搜 但Everything除了搜索 还自带了一些好用的功能 1 添加非NTFS格式的驱动器索引 默认Everything只会索引查询本地的NTFS格式磁盘
  • 解决文件嵌套太深无法删除问题。

    在搭建前端构建工具gulp时 存在一个文件夹node modules怎么删都删不掉 一 首先可以用del以及rd 百度经验上原文开始 如果你要删除的整个文件夹以及文件夹里面的所有内容的话rd s q 盘符 某个文件夹 这样整个文件夹所有的文
  • Python列表操作指南:索引、切片、遍历与综合应用

    文章目录 列表 简介 创建列表 索引和切片 列表的长度 列表的拼接和重复 检查元素是否存在 列表的方法 index 方法 count 方法 列表的修改和删除 修改元素 删除元素 列表的排序和反转 添加元素 列表的拷贝 列表的遍历 列表的切片
  • 批量创建多级文件夹(智能硬件项目文件夹管理为例)

    以智能硬件项目为例 创建项目文件夹 1 新建一个 txt文件 命名为 项目文件夹创建工具 txt 2 文件中输入如下内容 echo echo 项目文件夹创建工具 bat echo 作者 匠在江湖 echo 日期 2020 10 08 ech
  • 第四章文件管理

    0 初识文件管理 一个文件有哪些属性 文件名 由创建文件的用户决定文件名 主要是为了方便用户找到文件 同一目录下不允许有重名文件 标识符 一个系统内的各文件标识符唯一 对用户来说毫无可读性 因此标识符只是操作系统用于区分各个文件的一种内部名
  • 面向对象编程(OOP):理解类、封装性的关键概念

    文章目录 对象 Object 什么是对象 面向对象 OOP 面向过程的编程语言 面向对象的编程语言 类 class 使用类创建对象的流程 类的定义 代码演示 初始化方法和实例属性 类属性和类方法 继承和多态 魔术方法 小结 类的封装性 属性
  • C#中对txt文件的读写操作

    C 中对txt文件进行读写操作包括两种方式 一种是基于FileInfo类 调用该类的Read方法 但是该方法读出来的数据是byte格式 需要对其进行解码 将相应的字节数转换为字符 而C 中System Text引用就包含的解码的方法 相应代
  • Python文件操作和管理指南:打开、读取、写入和管理文件

    文章目录 文件 File 打开文件 使用 with as 语句打开文件 读取文件内容 读取大文件的方式 逐行读取和读取全部行 写文件操作 文件定位 seek tell 关闭文件 文件管理 获取目录结构 获取当前目录 切换当前所在目录 创建目

随机推荐

  • c++的cout输出

    1 c 的cout输出顺序是从左往右进行输出 但是是从右往左压入栈 2 c 的cout的输出是遇到函数是若函数内右cout的操作则立即执行 3 不同编译器对相同语句的编译规则是不一样的 所以最好不要对同一变量进行多次的修改 也不用深究 没有
  • go语言如何编译为可执行文件

    使用系统自带的cmd找到main函数所在位置 1 go build go即可把go程序编译成exe文件 2 go run go就可以运行go程序了 3 便宜源代码 官方说使用go build fileName 编译出来的就直接带有调试信息了
  • bash: ifconfig: 未找到命令 解决方案

    解决思路 1 ifconfig 命令存在的情况 首先查看 ifconfig 命令在哪个目录下 顺便检查是否安装了这个命令 whereis ifconfig 然后查看 echo PATH PATH 中是否包含了这个目录 一般情况下是不包含的
  • 前端开发都需要掌握那些技术?

    前端技术多且杂 那么作为前端开发者 我们可以从那些方面进行进阶提升呢 本文从以下几个方面进行了整理归纳 内容如下 一 网页开发 二 小程序 三 移动端 四 桌面端 五 其他技术 一 网页开发 这里指PC端网页开发 要求的技术主要有以下几类
  • 华为OD机试(JAVA)真题 -- 最长(连续)子串

    import java util Scanner 给定一个字符串 只包含字母和数字 按要求找出字符串中的最长 连续 子串 字符串本身是其最长的子串 子串要求 只包含 1 个字母 a z A Z 其余必须是数字 字母可以在子串中的任意位置 如
  • shell自动部署docker及docker-compose

    一 准备环境 centos7 6及centos7 9已通过测试 测试时服务器刚刚完成初始化 未修改任何配置 可以直接运行脚本进行安装 要求主机可以访问互联网 yum环境在脚本中已自动准备 将两个脚本直接复制放到root目录下 赋予可执行权限
  • NGUI学习笔记汇总

    NGUI学习笔记汇总 适用于NGUI2 x NGUI3 x 一 NGUI的直接用法 1 Attach a Collider 表示为NGUI的某些物体添加碰撞器 如果界面是用NGUI做的 只能这样添加 注 用Component添加无效 2 A
  • 前端WEB安全

    一 浏览器安全 首先了解前端web安全知识 比不可绕开的基础就是同源策略了 同源策略 Same Origin Policy 是一种约定 它是浏览器最核心也最基本的安全功能 如果缺少了同源策略 则浏览器的正常功能可能都会受到影响 可以说Web
  • 你想改变现在的生活吗?

    你想改变现在的生活吗 你想加薪吗 想买车吗 想找到你生命中的另一半吗 去学习吧 学校是个神奇的地方
  • 记一次解决联想笔记本冬天卡顿反应慢的方法

    个人简介 个人主页 九黎aj 幸福源自奋斗 平凡造就不凡 如果文章对你有用 麻烦关注点赞收藏走一波 感谢支持 欢迎订阅我的专栏 autojs 图携带方便买了一个联想笔记本 然后发现笔记本充电时候正常 不卡 不充电时候会卡0 4Ghz ctr
  • Java包装类、自动装箱与拆箱知识总结

    因为在学习集合时知道集合里存放的对象都是Object类型 取出的时候需要强制类型转换为目标类型 使用泛型集合不需要 如int a Integer arrayList get 0 然后我们就会发现 为什么要强制转换为Integer 而不是in
  • C++中const,指针和引用

    C 中的const 指针和引用 在线C C 编译器 可以试着运行代码 C 中的const 在C语言中 const修饰的量称为常变量 在编译过程中 const就是当成变量的编译生成指令的 不可以直接修改它的值 但是可以通过地址进行修改其对应的
  • springmvc 获取项目中的所有请求路径

    springboot springmvc 获取项目中的所有请求路径 1 编写业务代码 Autowired private WebApplicationContext applicationContext GetMapping getAllU
  • 关于vue2中$set及$delete的使用

    this set的使用 在平时使用vue进行开发的时候 我经常会遇到一个这样的问题 就是当data中包含声明且已赋值的对象或者数组 数组包对象 时 我们要向当前的这个对象中添加一个新的属性并且更新 结果发现并不会更新视图 只在控制台打印
  • Java读取操作大数据excel

    工作需要 读取大数据量的excel 用Apache poi的普通模式读取 会抛内存溢出 查询文档得知有另外一种模式 用户模式 该模式不会一下子整个文件load进来放在内存里 而是一行一行的读取 这样就能避免内存溢出了 上码 package
  • 数据库的数据类型

    数据库技术 1 创建数据表的语法规则 CREATE TABLE lt 表名 gt lt 列名 gt lt 数据类型 gt lt 列级完整性约束条件 gt lt 列名 gt lt 数据类型 gt lt 列级完整性约束条件 gt lt 表级完整
  • Yum安装MySQL8.0版本

    文章目录 Yum安装MySQL8 0版本 实验环境 一 配置yum源 1 先备份Centos Base repo 然后从阿里云下载centos7 repo 备份本地yum源 下载阿里云的yum源 2 安装之前的环境检查 查看是否已经安装My
  • 【构建ML驱动的应用程序】第 9 章 :选择部署选项

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • rs lidar速腾激光雷达使用方法之录包及离线播放

    目录 一 录包packet 1 修改雷达参数配置config 2 录包 二 播放包 1 修改雷达参数配置config 2 编译 运行驱动 3 播放包 一 录包packet 1 修改雷达参数配置config 可以直接录制点云消息 但这种方法会
  • Python文件操作和管理指南:打开、读取、写入和管理文件

    文章目录 文件 File 打开文件 使用 with as 语句打开文件 读取文件内容 读取大文件的方式 逐行读取和读取全部行 写文件操作 文件定位 seek tell 关闭文件 文件管理 获取目录结构 获取当前目录 切换当前所在目录 创建目