【python之路19】文件操作
一、打开文件
文件句柄 = open('文件路径', '模式')
打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。
打开文件的模式有:
- r ,只读模式【默认】
- w,只写模式【不可读;不存在则创建;存在则清空内容;】
- x, 只写模式【不可读;不存在则创建,存在则报错】
- a, 追加模式【可读; 不存在则创建;存在则只追加内容;】
#!usr/bin/env python
# -*- coding:utf-8 -*-
f = open('history.log','r') #以只读模式打开文件
data = f.read() #读取内容并赋值给data
f.close()
print(data)
#!usr/bin/env python
# -*- coding:utf-8 -*-
f = open('history1.log','w',encoding='utf-8') #以只写模式打开文件,因为找不到文件,此时会创建history1.log
data = f.write('你好') #读取内容并赋值给data
f.close()
"+" 表示可以同时读写某个文件
- r+, 读写【可读,可写】
- w+,写读【可读,可写】
- x+ ,写读【可读,可写】
- a+, 写读【可读,可写】
"b"表示以字节的方式操作
- rb 或 r+b
- wb 或 w+b
- xb 或 w+b
- ab 或 a+b
注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型
可以用seek()和 tell()函数进行测试各个打开方式的不同,两个函数分别是:移动指针的位置、返回当前指针位置
1、r+的打开方式总结:
1)打开文件时,原文件中的内容不变
2)打开文件后,指针默认的位置处于0,此时写入数据从开始写入,覆盖后面的数据,如果是读取数据是从开始读取
3)可以读也可以写
4)只要读一次,不管读几个字符,写入的时候就会在尾部进行追加数据。所以读取数据后要想从开头或中间写入数据,需要用seek()改变指针位置。
f = open('history1.log','r+',encoding='utf-8') #history1中的内容为:hello,what is your name
print(f.tell()) #文件中的内容未变,返回0。说明:打开文件后当前指针为0的位置
data = f.read()
print(data) #返回:hello,what is your name说明默认从0的位置读到末尾,此时指针在最后
f.write("my name is sunshuhai") #文件中的内容变为:hello,what is your namemy name is sunshuhai
f.close
2、w+的打开方式总结
1)如果文件存在,则打开原文件,并把原文件内容清空;如果文件不存在,则建立该空文件
2)指针指向0
3)写入后可以进行读取,需要用seek()移动指针的位置才能读取
f = open('history1.log','w+',encoding='utf-8') #history1中的内容为:hello,what is your name
print(f.tell()) #打开时文件中的内容被清空,此时指针处于0位置 f1 = open('history2.log','w+',encoding='utf-8') #history2不存在该文件,运行代码后会自动创建history2.log文件
3、x+的打开方式总结
1)如果文件已经存在则报错,如果文件不存在则会创建新的文件
2)写入后可以进行读取,写入后指针处于最后,需要用seek()移动指针的位置才能读取
f = open('history1.log','x+',encoding='utf-8') #history1中的内容为:hello,what is your name
print(f.tell())
f.close() #报错,因为文件已经存在
f1 = open('history3.log','x+',encoding='utf-8') #history3不存在该文件,运行代码后会自动创建history3.log文件
4、a+的打开方式总结
1)如果文件已经存在则打开,如果不存在则创建
2)打开后原来的文件内容不变
3)默认的指针位置在最后
4)可以进行读和写
f = open('history1.log','a+',encoding='utf-8') #不存在则创建,存在则打开,此时history1.log中的内容为hello,what is your name
print(f.tell()) #返回23,说明:追加模式打开,指针会默认移到最后
data = f.read()
print(data) #返回空,因为指针在最后,所以读取不到数据
f.write('你好') #此时内容为:hello,what is your name你好
f.close()
二、文件操作的主要功能函数
f = open('history1.log','r+',encoding='utf-8')
f.close() #关闭文件
f.flush() #在文件关闭前,就把写入的内容刷到硬盘
f.read(n) #默认则读取文件的全部内容,加参数则读取前几个字符(如果以b的方式打开则读取几个字节)
f.readline() #按行读取,默认读取当前指针所在的行
f.seek(n) #调整指针的位置,把指针放在n个字节处
f.tell() #获取指针的位置
f.truncate() #截取开始至当前指针位置中的内容,其他内容则删除
f.write() #向文件中写入内容
seek(0)表示移动到开头,移动到结尾: seek(0,2) seek的第⼆个参数表⽰的是从哪个位置进⾏偏移, 默认是0, 表 ⽰开头, 1表⽰当前位置, 2表⽰结尾
f.readlines() #把所有的行读入列表中,如果文件中的行数很多,内存消耗会很大,适应于行数较少的问件
f.xreadline() #2.x系列才有,生成文件每行的迭代器,相当于for i in f:
for循环打印输出文件的每一行:
f = open('history2.log','r+',encoding='utf-8')
for line in f:
print(line) #循环打印输出每一行
三、with文件打开方式
用with打开文件,with会自动给关闭,无需用f.close()
用with可以同时打开两个文件
with open('history2.log','r+',encoding='utf-8') as f:
data = f.read()
print(data)#最后无需f.close(),with语句会自动给关闭文件
#python2.7及以后版本支持同时打开多个文件
with open('history1.log','r+',encoding='utf-8') as f1,open('history2.log','r',encoding='utf-8') as f2:
print(f1.read())
print(f2.read())
【python之路19】文件操作的更多相关文章
- 小白的Python之路 day2 文件操作
文件操作 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 ...
- python之路(五)-文件操作
文件操作无非两个,即:读.写 python 2.x: 文件句柄 = file('文件路径', '模式') python3.x: 文件句柄 = open('文件路径', '模式') 打开文件的模式有: ...
- python之路---08 文件操作
二十六. 文件 f = open(文件路径,mode = '模式',encoding = '编码格式') 1.基础 ① 读写时,主要看光标的位置 ②操作完成要写 f.close( ) f.f ...
- python成长之路五-文件操作
1,文件操作 f = open("D:\种子.txt",encoding="utf-8",mode="r") # 打开一个种子.txt文件, ...
- Python学习之路4 - 文件操作&编码转换
文件操作 文件操作大概分三步: 把文件打开. 操作文件. 把文件关上. 打开文件 打开文件用open()函数,打开成功后返回一个资源,具体语法如下. open(要打开的文件,打开方式,打开文件的格式, ...
- 第三章:Python基础の函数和文件操作实战
本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...
- python 函数初识和文件操作
文件操作 打开文件:文件句柄 = open('文件路径', '模式') 打开文件的模式 w #以写的方式打开 (不可读,不存在则创建,存在则删除内容) a #以追加的模式打开(可读, 不存在则创建 ...
- python基础学习笔记——文件操作
文件操作 初始文件操作 使用Python来读写文件是非常简单的操作,我们使用open()函数来打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作了 根据打开方式的不同能够执行的操作 ...
- Python基础知识(八)----文件操作
文件操作 一丶文件操作初识 ###f=open('文件名','模式',编码): #open() # 调用操作系统打开文件 #mode #对文件的操作方式 #encoding # 文件的编码格式 存储编 ...
随机推荐
- 转:如何成为Linux高手
源地址:http://www.douban.com/note/60936243/ 经过几年的发展,公司在互联网公司里面也算是大公司了,线上机器使用的操作系统都是Linux,部门有几个同事,天天都跟Li ...
- Lab 2 内存管理
常见的操作系统 只使用了 0 和3 段选择子 DPL 是段描述符的内容 段的信息 中断和陷入的 大致特权级的展现 RPL 当前要访问数据段对饮给的特权级 CPL 当前代码段的特权级 DPL 全局的 通 ...
- mv- Linux必学的60个命令
1.作用 mv命令用来为文件或目录改名,或者将文件由一个目录移入另一个目录中,它的使用权限是所有用户.该命令如同DOS命令中的ren和move的组合. 2.格式 mv[options] 源文件或目录 ...
- Leetcode201. Bitwise AND of Numbers Range数字范围按位与
给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点). 示例 1: 输入: [5,7] 输出: 4 ...
- LeetCode404Sum of Left Leaves左叶子之和
计算给定二叉树的所有左叶子之和. 示例: 3 / \ 9 20 / \ 15 7 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 class Solution { pub ...
- object and namespace
http://effbot.org/zone/python-objects.htm 几点总结: (1) 类的基本属性 . id, returned by id(obj) . type, returne ...
- 基于在树上走的DP问题
笔者已经很久没有打过题解了,如果打题解,就总是要连着一个知识点来打题解. 最近做过一共两道这样的题目.笔者认为这样的题有较强的可拓展性,比较有意义. 所以就打一篇博客. 问题概述 先说说这是个什么样的 ...
- watch、tail联合使用
因为用了tmux,不想调整窗格大小,只想输出命令结果的最后几行,所以就想出了这个方法. watch.tail联合用法 watch 'echo "`nvidia-smi`" | ta ...
- mysql函数,语法
转自:http://www.cnblogs.com/kissdodog/p/4168721.html MySQL数据库提供了很多函数包括: 数学函数: 字符串函数: 日期和时间函数: 条件判断函数: ...
- Hibernate-一对多|多对一-多对多
1 一对多|多对一 1.1 关系表达 表中的表达 表中的表达 实体中的表达 orm元数据中表达 一对多 多对一 1.2 操作 操作关联属性 1.3 进阶操作 级联操作 结论: 简化操作.一定要用,s ...