python专题文件操作
一 前言
本篇文章主要对文件操作进行说明,知识追寻者创作必属精品,读完本篇你将获得基础的文件操作能力,深入理解文件操作API,基础真的很重要,不管学什么知识,故看知识追寻者的专题系列真的很不错。
二 open函数介绍
2.1 open函数概览
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
- file 可以是给定的文本文件或者是文件字符串形式的名称
- mode 模式是操作文件以何种方式打开,比如读,写模式,读取为二进制等;
- buffering 是缓存机制(可选参数),设置为0为关闭缓存;设置为1表示行缓存,必须是在文本模式下执行;设置值 大于1 表示固定值的块缓存;不给定参数,系统会设置默认缓存,通常二进制文件是固定大小的块缓存,大小为4096或者8192;
- encoding 表示设置编码或者解码,默认的编码解码是跟随平台,必须是文本模式下可执行;用户可以自定义,
- errors 可选操作,表示指定如何处理编码异常;如果设置为ignore,可能会造成数据丢失;
- newline 表示对换行的具体操作,比如 '\n' , '\r' , '\n\r',必须在文本模式下进行;
- closefd 如果设置会False 当文件关闭时,文件的描述会一直打开,造成内存泄漏;通常会在open方法前面加with解决此类问题,否则需要调用close()方法关闭句柄;
2.2 mode 模式介绍
基础模式如下,在不冲突的情况下可以对文件的模式进行自由组合,比如 wb表示以二进制文件形式打开文件进行写操作;
模式 | 含义 |
---|---|
t | 文本模式 (默认) |
b | 二进制模式 |
w | 写入模式 |
x | 创建一个新的文件,并且写入数据 |
a | 在已经存在的文件末尾追加内容 |
+ | 打开磁盘文件对其进行更新操作,可以是读或者写 |
U | 另起一行模式,已经过时,会引起异常 |
2.3 文件方法介绍
方法名称 | 方法说明 |
---|---|
read(size) | 读取文件,size为可选参数为-1或者省略表示读取全部内容 |
readline() | 从文件中读取一行 |
readlines() | 读取多行 |
write(string) | 写入字符串到文件,返回字符数 |
tell() | 返回文件当前位置 |
close() | 关闭文件 |
flush() | 手动冲刷缓存至底层 |
三 读文件操作
3.1 准备工作
在工程目录下的base目录文件夹下创建一个dir文件夹,专门用于存储文件;创建一个zszxz.txt 文件 内容如下
我以星辰送大海
我以盏杯敬明月
3.2 读取整个文件
- 指定文件路径path
- 指定模式r 为读操作
- 指定编码格式为utf-8
- 调用read()方法
path = "dirs/zszxz.txt"
with open(path, 'r', encoding='UTF-8') as file_obj:
content = file_obj.read()
print(content.rstrip())
输出结果
我以星辰送大海
我以盏杯敬明月
3.3读取单行
使用readline()方法会读取单行,对于整个文件需要进行多次读取;
path = "dirs/zszxz.txt"
with open(path, 'r', encoding='UTF-8') as file_obj:
content_1 = file_obj.readline()
print(content_1.rstrip())
content_2 = file_obj.readline()
print(content_2.rstrip())
输出结果
我以星辰送大海
我以盏杯敬明月
3.3 多行读取
- 使用readlines()方法返回一个列表
- 使用循环遍历读取
path = "dirs/zszxz.txt"
with open(path, 'r', encoding='UTF-8') as file_obj:
lines = file_obj.readlines()
for line in lines:
print(line.rstrip())
输出结果
我以星辰送大海
我以盏杯敬明月
3.4 按行读取
直接对文件进行迭代,能简化代码,提高效率;
path = "dirs/zszxz.txt"
with open(path, 'r', encoding='UTF-8') as file_obj:
for line in file_obj:
print(line.rstrip())
四 写操作
- path 指定文件路径
- mode 模式为w 表示写入数据
- 执行write()方法
- 返回count为写如的字符数
写入全部数据
# -*- coding: utf-8 -*-
path = "C:\mydata\generator\zszxz.txt"
with open(path,'w',encoding='UTF-8') as file_obj:
count = file_obj.write("happily reading the article of zszxz")
print(count)
返回结果如下,说明写入了36个字符;
36
五 获取当前位置
- path 指定文件路径
- mode 模式为 r表示读
- 调用readline()方法 表示读取行
- 调用tell()方法获取读取文件当前位置
path = "dirs/zszxz.txt"
with open(path, 'r', encoding='UTF-8') as file_obj:
line = file_obj.readline()
position = file_obj.tell()
print(position)
print(line.rstrip())
输出结果
23
我以星辰送大海
python专题文件操作的更多相关文章
- Python :open文件操作,配合read()使用!
python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...
- Python 常见文件操作的函数示例(转)
转自:http://www.cnblogs.com/txw1958/archive/2012/03/08/2385540.html # -*-coding:utf8 -*- ''''' Python常 ...
- 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容
孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ...
- 孤荷凌寒自学python第三十三天python的文件操作初识
孤荷凌寒自学python第三十三天python的文件操作初识 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天开始自学python的普通 文件操作部分的内容. 一.python的文件打开 ...
- python中文件操作的六种模式及对文件某一行进行修改的方法
一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以 ...
- python中文件操作的其他方法
前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r', ...
- Python常见文件操作的函数示例
# -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() ...
- python的文件操作及简单的用例
一.python的文件操作介绍 1.文件操作函数介绍 open() 打开一个文件 语法:open(file, mode='r', buffering=-1, encoding=None, errors ...
- python基本文件操作
python文件操作 python的文件操作相对于java复杂的IO流简单了好多,只要关心文件的读和写就行了 基本的文件操作 要注意的是,当不存在某路径的文件时,w,a模式会自动新建此文件夹,当读模式 ...
随机推荐
- H3C DNS域名解析完整过程
- 连接远程mysql(Linux环境)
保证三点: 1.打开/etc/my.cnf,找到[mysqld]项,在其后加入一句:skip-name-resolve,保存,重启mysql服务. service mysqld restart 或者 ...
- Linux 内核 启动时间
为见到 PCI 如何工作的, 我们从系统启动开始, 因为那是设备被配置的时候. 当一个 PCI 设备上电时, 硬件保持非激活. 换句话说, 设备只响应配置交易. 在上电时, 设备没有内存并且没有 I/ ...
- dotnet 删除只读文件
如果直接通过 File.Delete 删除只读文件会出现没有权限提示,可以先设置文件不是只读然后删除文件 try { File.Delete(file); } catch (UnauthorizedA ...
- 从物联网设备生命周期理解Apple Homekit框架
本次笔记主要基于苹果公开的HomeKit Accessory Protocol协议文档和IOS Security Guide中相关部分. 总体来讲,设备与App之间采用端到端的加密,密钥由设备和App ...
- 用WPF实现大数据展示,超炫的效果
开头语 经过一段时间研究,终于实现CS和BS相同效果的大数据展示平台了.首先来看看实现的效果,超炫的效果,客户特别喜欢,个人也非常满意,分享给各位,同大家一起交流学习. 从上图可以看出,分为左中右三栏 ...
- AbstractRoutingDataSource动态数据源切换
操作数据一般都是在DAO层进行处理,可以选择直接使用JDBC进行编程(http://blog.csdn.net/yanzi1225627/article/details/26950615/) 或者是使 ...
- IE框架表单遍历
// HtmlWeb.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <atlbase.h> #include ...
- Lyft Level 5 Challenge 2018 - Final Round (Open Div. 2) (前三题题解)
这场比赛好毒瘤哇,看第四题好像是中国人出的,怕不是dllxl出的. 第四道什么鬼,互动题不说,花了四十五分钟看懂题目,都想砸电脑了.然后发现不会,互动题从来没做过. 不过这次新号上蓝名了(我才不告诉你 ...
- Django进阶一
目录 表关系创建 django请求生命周期流程 路由层 无名分组 有名分组 反向解析 路由分发 名称空间 虚拟环境 django版本区别 伪静态 视图层 三板斧 JsonResponse前后端交互数据 ...