12、文件及目录操作

  在变量、序列和对象中存储的数据是暂时的,程序结束后就会丢失。为了能够长时间地保存程序中的数据,需要将程序中的数据保存到磁盘文件中。Python提供了内置的文件对象和对文件,以及目录进行操作的内置模块。

12.1 基本文件操作

  在Python中,内置了文件(File)对象。使用open()函数打开文件,可以使用文件对象的write()方法向文件中写入内容,以及使用close()方法关闭文件等。

12.1.1 创建和打开文件

  使用open()函数打开文件,基本语法格式为:

file = open(filename[,mode,[,buffering]])

mode参数的参数说明:

1. 打开一个不存在的文件时先创建该文件

  一般情况,用open()一个不存在的文件,会报错。所以,在调用open()函数时,指定mode的参数值为w、w+、a、a+。这样,当要打开的文件不存在时,就可以创建新的文件了。

print('\n','=' * 10, '蚂蚁庄园动态', '=' * 10)
file = open('message.txt', 'w')
print('\n 即将展示.....\n')'''
========== 蚂蚁庄园动态 ==========即将展示.....
'''

2. 以二进制形式打开文件

  open()函数不仅可以以文本的形式打开文本文件,而且可以以二进制形式打开非文本文件,如图片文件、音频文件、视频文件等。

f = open('bjut.jpg', 'rb')
print(f)
'''
<_io.BufferedReader name='bjut.jpg'>
'''

3.打开文件时指定编码方式

  在使用open()函数打开文件时,默认采用GBK编码,否则就会被报错。在调用open()函数时,通过添加encoding='utf-8'参数即可实现将编码指定为UTF-8。例如,打开采用UTF-8编码保存的notice.txt文件,可以使用下面的代码。

file = open('notive.txt', 'r', encoding = 'utf-8')

12.1.2 关闭文件

  打开文件后,需要及时关闭,以免对文件造成不必要的破坏。关闭文件可以使用文件对象的close()方法实现。

print('\n','=' * 10, '蚂蚁庄园动态', '=' * 10)
file = open('message.txt', 'w')
print('\n 即将展示.....\n')file.close()

12.1.3 打开文件时使用with语句

  如果打开文件时抛出了异常,将导致文件不能被及时关闭。则使用Python提供的with语句。

print('\n','=' * 10, '蚂蚁庄园动态', '=' * 10)
with open('message.txt', 'w') as file: # 创建或者打开蚂蚁庄园动态信息的文件pass # 不执行任何操作
print('\n 即将展示.....\n')

12.1.4 写入文件内容

  Python的文件对象提供了write()方法,可以向文件中写入内容。

print('\n','=' * 10, '蚂蚁庄园动态', '=' * 10)
file = open('message.txt', 'w')
file.write('你使用了一张加速卡,小鸡撸起袖子开始双手吃饲料,进食速度大大加快。\n')
print('\n 写入了一条动态。。。。。。\n')file.close()'''
你使用了一张加速卡,小鸡撸起袖子开始双手吃饲料,进食速度大大加快。
'''

  写入文件后,一定要用close()方法关闭,否则不会被成功写入。

  向文件中写入内容时,如果打开文件采用w(写入)模式,则先清空原文件的内容,再写入新的内容;如果想追加内容,使用a(追加)模式:

print('\n','=' * 10, '蚂蚁庄园动态', '=' * 10)
file = open('message.txt', 'a')
file.write('mingri的小鸡在你的庄园待了22分钟,吃了6g的饲料之后,被你赶走了。\n')
print('\n 追加了一条动态。。。。。。\n')file.close() # 关闭了文件的对象
'''
你使用了一张加速卡,小鸡撸起袖子开始双手吃饲料,进食速度大大加快。
mingri的小鸡在你的庄园待了22分钟,吃了6g的饲料之后,被你赶走了。
'''

12.1.5 读取文件

1. 读取指定字符

  文件对象提供了read()方法读取指定个数的字符。例如,要读取message.txt文件中的前9个字符:

print('\n','=' * 10, '蚂蚁庄园动态', '=' * 10)
with open('message.txt', 'r') as file:str = file.read(9)print(str)file.close() # 关闭了文件的对象
'''========== 蚂蚁庄园动态 ==========
你使用了一张加速卡
'''

  使用read(size)方法读取文件时,是从文件的开头读取的。如果想要读取部分内容,可以先使用文件对象的seek()方法将文件的指针移动到新的位置,然后再应用read(size)方法读取。

print('=' * 10, '蚂蚁庄园动态', '=' * 10)
with open('message.txt', 'r') as file:file.seek(12) # 从第12个字符开始 # 注意一个汉字占用2个字符 英文和数字各占1个字符str = file.read(23) # 读取23个字符 # read()函数 均占用一个字符print(str)
file.close() # 关闭了文件的对象
'''
========== 蚂蚁庄园动态 ==========
加速卡,小鸡撸起袖子开始双手吃饲料,进食速度大
'''

  file.read()表示读取文件中的所有内容。

print('=' * 10, '蚂蚁庄园动态', '=' * 10)
with open('message.txt', 'r') as file:str = file.read()print(str)
file.close() # 关闭了文件的对象
'''
========== 蚂蚁庄园动态 ==========
你使用了一张加速卡,小鸡撸起袖子开始双手吃饲料,进食速度大大加快。
mingri的小鸡在你的庄园待了22分钟,吃了6g的饲料之后,被你赶走了。
'''

2. 读取一行

  文件对象提供了readline()方法用于每次读取一行数据。

print('=' * 35, '蚂蚁庄园动态', '=' * 35, '\n')
with open('message.txt', 'r') as file:number = 0while True:number += 1line = file.readline()if line == '':breakprint(number, line, end = '\n')
print('\n', '=' * 35, 'over', '=' * 35, '\n')
file.close() # 关闭了文件的对象
'''
=================================== 蚂蚁庄园动态 =================================== 1 你使用了一张加速卡,小鸡撸起袖子开始双手吃饲料,进食速度大大加快。2 mingri的小鸡在你的庄园待了22分钟,吃了6g的饲料之后,被你赶走了。3 你的小鸡在QQ庄园里待了22分钟,吃了8g饲料,被庄园主人赶了回来。4 你使用了一张加速卡,小鸡撸起袖子开始双手吃饲料,进食速度大大加快。5 CC来到了你的庄园,并提醒你无语的小鸡已经偷吃了饲料21分钟,吃掉了6g,你的小鸡拿出了10g饲料奖励给CC。=================================== over =================================== '''

3. 读取全部行

  读取全部行,使用的是文件对象的readlines()方法,返回的是一个字符串列表:

  下面的代码将读取的列表中的内容,换行打印了出来:

print('=' * 35, '蚂蚁庄园动态', '=' * 35, '\n')
with open('message.txt', 'r') as file:message = file.readlines()for line in message: # 不换行 就是列表的形式print(line)
print('\n', '=' * 35, 'over', '=' * 35, '\n')
file.close() # 关闭了文件的对象
'''
=================================== 蚂蚁庄园动态 =================================== 你使用了一张加速卡,小鸡撸起袖子开始双手吃饲料,进食速度大大加快。mingri的小鸡在你的庄园待了22分钟,吃了6g的饲料之后,被你赶走了。你的小鸡在QQ庄园里待了22分钟,吃了8g饲料,被庄园主人赶了回来。你使用了一张加速卡,小鸡撸起袖子开始双手吃饲料,进食速度大大加快。CC来到了你的庄园,并提醒你无语的小鸡已经偷吃了饲料21分钟,吃掉了6g,你的小鸡拿出了10g饲料奖励给CC。=================================== over ===================================
'''

极简Python语法(9)相关推荐

  1. 极简Python语法(5)

    10.模块 10.1 模块概述    一个函数相当于一个积木,一个模块中可以包含很多函数.在Python中,一个扩展名为.py的文件就称为一个模块.    通常把能够实现某一特定功能的代码放置在一个文 ...

  2. 极简Python语法(4)

    9.面向对象程序设计 9.1 面向对象概述 一种设计思想.是指客观世界中存在的对象,具有唯一性.也可以是抽象的一个事物,具有自己的属性和行为.面向对象技术是一种从组织结构上模拟客观世界的方法. 对象 ...

  3. lisp对excel其他行列写入_【极简Python 自动化办公】Python写入Excel表格

    [极简Python 自动化办公]Python写入Excel表格 [极简Python 自动化办公]专栏是介绍如何利用python办公,减少工作负荷.篇幅精炼,内容易懂,无论是否有编程基础,都非常适合. ...

  4. 你好Python -- 极简Python教程

    你好Python -- 极简Python教程 本教程针对Python业余爱好者,展示入门级的编程知识. 目录 你好Python -- 极简Python教程 一. 你好Python! 二. 我想对Pyt ...

  5. itext word模板替换_【极简Python 自动化办公】Python写入Word文档

    [极简Python 自动化办公]专栏是介绍如何利用python办公,减少工作负荷.篇幅精炼,内容易懂,无论是否有编程基础,都非常适合. 在上次文章中,我们学习了[用python写入excel],这次我 ...

  6. 30 段极简 Python 代码:这些小技巧你都 Get 了么?

    选自 | towardsdatascienc 编译 | 机器之心 学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现 ...

  7. 30段极简Python代码:这些小技巧你都Get了么(附代码链接)

    来源:机器之心 本文约3200字,建议阅读8分钟. 本文带你了解30个极简任务,它们都是平常非常实用的技巧,我们只要花几分钟就能从头到尾浏览一遍. 学 Python 怎样才最快,当然是实战各种小项目, ...

  8. 30段极简Python代码:这些小技巧你都Get了么

    学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现:本文同样也是 30 段代码,Python 开发者也可以看看是不是 ...

  9. python中modify的用法_30段极简Python代码:这些小技巧你都Get了么

    学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现:本文同样也是 30 段代码,Python 开发者也可以看看是不是 ...

最新文章

  1. DirectX下 Viewing Frustum 的详细实现
  2. 第10章* 网络 幂律分布
  3. java结丹期(15)----javaweb(maven(1))
  4. 32位选择进位加法器_32位加减法器设计
  5. dll可以在linux下使用吗_无需虚拟技术,6步直接在Windows下使用Linux
  6. 你还在为20倍的连麦成本发愁吗?
  7. Google Map浏览下载器
  8. 2021CSP:游记
  9. python terminal调试_python执行命令行调试工具pdb
  10. Linux的文件权限与目录设置
  11. 消除由try/catch语句带来的Warning
  12. SCUT - 290 - PARCO的因数游戏 - 博弈论
  13. [转载] Python中三种类型的引号(单引号、双引号、三引号)
  14. 【LeetCode】【字符串】题号:*387. 字符串中的第一个唯一字符
  15. 线段树——I hate it
  16. 转:java工程师成神之路
  17. cad的dwg文件转html文件,dwg转dwf文件怎么打开?
  18. MIUI12系统简单卡刷开发版获取Root超级权限的步骤
  19. 河南财经政法大学计算机基础,河南财经政法大学就“忘开必修课”情况说明
  20. 大数据解决方案:Hadoop监控

热门文章

  1. 使用一个git仓库管理多个项目
  2. [Android各版本特性]Android 4.4 Kitkat
  3. 史上最全场景文字识别资源汇集(56篇重要论文 + 20 个开源代码 + 330 个实验结果 + 1882个统计信息)...
  4. 解释程序与解释程序的缺点,图解——解释程序与编译程序的区别
  5. 请输出in.txt文件中的2 4 6 8 9 10 12行
  6. ArcGIS使用(一)创建ArcGIS应用
  7. C++的std::packaged_task
  8. matlab 导出图片坐标_Matlab绘图---坐标系显示设置
  9. 区块链技术应用到现实场景中,是个什么样?
  10. 学习《python模拟测试机器人》笔记2