Python学习笔记之文件处理
1、打开和关闭
要打开文件可以使用函数 open(),它位于自动导入模块 io 中
函数将文件名作为唯一不可缺少的参数,并返回一个文件对象
它还有一个名叫 mode 的参数,用于指定文件模式,其可取值如下:
| 值 | 描述 |
|---|---|
| 'r' | 读取模式(默认值) |
| 'w' | 写入模式,当文件不存在时创建它,当文件存在时清除原有内容 |
| 'x' | 独占写入模式,当文件不存在时创建它,当文件存在时引发异常 |
| 'a' | 附加模式,在既有文件末尾继续写入 |
| 'b' | 二进制模式(与其它模式结合使用) |
| 't' | 文本模式(默认值,与其它模式结合使用) |
| '+' | 读写模式(与其它模式结合使用) |
要关闭文件可以使用函数 close(),在把数据写入文件后,若没有正确关闭文件,则很可能不能成功地写入数据
为此,Python 提供了一种更加简便的方法,with 语句。当使用 with 语句打开文件时,将自动关闭文件
>>> with open('fileName') as f:
pass
2、读取和写入
首先要明白,在文本模式和二进制模式下,Python 分别将 str 和 bytes 作为文件传输的基本数据类型
(1)按字符或字节读写
如果有一个名为 f 的文件对象,那么我们可以用 f.write() 来写入数据
>>> f = open('testFile.txt','w') # 当没有指定 b 或 t 时,默认为 t
>>> f.write('Hello, ')
# 7
>>> f.write('World')
# 5
>>> # 还没有使用 f.close 关闭文件时,文件中没有写入任何内容
>>> f.close()
读取也同样简单,使用 f.read() 方法即可
在文本模式下需要说明读取多少个字符,在二进制模式下需要说明读取多少个字节
>>> f = open('testFile.txt') # 当不指定模式时,默认为 rt
>>> f.read(2)
# 'He'
>>> f.read() # 不提供参数时,读取余下的全部内容
# 'llo, World'
(2)按行读写
对于按行读取文件,我们可以使用方法 readline()
当不提供任何参数时,读取一行并返回,当提供一个非负整数时,读取指定字符数并返回
如果希望读取文件中所有行,并以列表的方式返回它们,可以使用方法 readlines()
对于写入文件,方法 writelines() 和方法 readlines() 相反,其接收一个字符串列表,并将这些字符串写入文件中
注意,写入时并不会自动添加换行符,因此必须自行添加,另外,不存在方法 `writeline()``
>>> f = open('testFile.txt','w')
>>> f.writelines(['I\n','Love\n','Python\n'])
>>> f.close()
>>> f = open('testFile.txt','r')
>>> f.readline()
# 'I\n'
>>> f.readlines()
# ['Love\n', 'Python\n']
(3)迭代文件对象
① 每次一个字符或字节
with open(fileName) as f:
while True:
char = f.read(1)
if not char: break
process(char)
② 每次一行
with open(fileName) as f:
while True:
line = f.readline()
if not line: break
process(line)
③ 文件迭代器
with open(fileName) as f:
for line in f:
process(line)
3、随机存储
在之前的做法中,我们将文件视为流,只能按顺序从头到尾读取
实际上,读写可以在任意位置进行,这称为随机存储。为此,可以使用文件对象的两个方法:seek 和 tell
方法 seek(offest[, whence]) 将当前位置移到 offest 和 whence 指定的位置
参数 offest 指定偏移字符或字节数,参数 whence 指定偏移的初始位置,它的取值有三个:
默认为文件开头 io.SEEK_SET(0),可以是当前位置 io.SEEK_CUR(1),可以是文件末尾 io.SEEK_END(2)
方法 tell() 返回文件当前位置
>>> f = open('testFile.txt','w')
>>> f.write('01234567890123456789')
# 20
>>> f.seek(5)
# 5
>>> f.write('Hello World')
# 11
>>> f.close()
>>> f = open('testFile.txt','r')
>>> f.read()
# '01234Hello World6789'
>>> f.close()
【 阅读更多 Python 系列文章,请看 Python学习笔记 】
Python学习笔记之文件处理的更多相关文章
- [Python学习笔记]组织文件
shutil 模块 shutil 模块可以让我们很方便的在Python程序中复制.移动.改名和删除文件. 复制文件和文件夹 使用shutil.copy()来复制文件,该函数含两个参数,均为字符串格式的 ...
- Python学习笔记015——文件file的常规操作之一(文本文件)
1 什么是文件 文件是用于数据存储的单位 文件通常用来长期保存数据 读写文件是最常见的I/O操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件的功能都是由操作系统提供的,一般而言,操 ...
- python学习笔记(11):文件的访问与函数式编程
一.文本文件读写的三种方法 1.直接读入 file1 = open('E:/hello/hello.txt') file2 = open('output.txt','w') #w是可写的文件 whil ...
- python学习笔记(7)文件的访问与函数式编程
一.文件读写的3中方法 1.直接读入 fiel1=open('test.txt') file2=open('output.txt') while True: line=file1.readLine() ...
- python学习笔记(六)---文件操作与异常处理机制
文件读取 读取整个文件 要读取文件,需要一个包含几行文本的文件.下面首先来创建一个文件,它包含精确到小数点后30位的圆周率值,且在小数点后每10位处都换行: pi_digits.txt 3.14159 ...
- 转载-Python学习笔记之文件读写
Python 文件读写 Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件 ...
- python学习笔记之文件操作(三)
这篇博客小波主要介绍一下python对文件的操作 对文件的操作主要分为三步: 1.打开文件获取文件的句柄,句柄也是文件描述符 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件,是小波随写的周杰伦 ...
- python学习笔记4(文件操作)
文件操作: 1.f=open(”caidan”,”w”,encoding=”utf8”) 直接打开一个文件,如果文件不存在则创建文件 f.close() 2.with open (”caid ...
- 转载-python学习笔记之文件I/O
Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你 ...
随机推荐
- apache ant解压zip。支持多级文件夹解压
package cn.liuc.util; import java.io.File; import java.io.FileOutputStream; import java.io.IOExcepti ...
- dlk 模板
struct DLX { int n , m,size; int U[N],D[N],R[N],L[N],row[N],col[N]; int ans[N],S[N]; int ansd; void ...
- bzoj 3231 [ Sdoi 2008 ] 递归数列 —— 矩阵乘法
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3231 裸矩阵乘法. 代码如下: #include<iostream> #incl ...
- scws
SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统). 这是一套基于词频词典的机械式中文分词引擎,它能将一整段的中文文本基本正确地切分成 ...
- [Apple开发者帐户帮助]五、管理标识符(4)注册一个应用程序组
您需要注册一个或多个组才能启用应用组. 所需角色:帐户持有人或管理员. 在“ 证书”,“标识符和配置文件”中,从左侧的弹出菜单中选择操作系统. 在“标识符”下,选择“应用程序组”,然后单击右上角的“添 ...
- Python27天 反射 ,isinstance与ssubclass 内置方法
所学内容 反射 1.hasattr ( 判断一个属性在对象里有没有 ) -------------------- [对象,字符串属性]本质是:# 判断 ' name ' in obj.__dict__ ...
- Speex回声消除原理深度解析
这里假设读者具有自适应滤波器的基础知识.Speex的AEC是以NLMS为基础,用MDF频域实现,最终推导出最优步长估计:残余回声与误差之比.最优步长等于残余回声方差与误差信号方差之比,这个结论可以记下 ...
- ROS-导航功能-Gazebo
前言:仿真的整体思路,先启动仿真环境,再启动导航功能. 前提:已下载并编译了相关功能包集,如还未下载,可通过git下载:https://github.com/huchunxu/ros_explorin ...
- PHP 二维数组排序 可以按指定 键值排序
<?php header("Content-Type:utf-8"); $arr = array( 0 => array( 'name' => '国际原油价格', ...
- RabbitMQ 官方NET教程(六)【RPC】
在第二个教程中,我们学习了如何使用Work Queues在多个工作者之间分配耗时的任务. 但是如果我们需要在远程计算机上运行功能并等待结果怎么办? 那是一个不同的模式. 此模式通常称为远程过程调用或R ...