Python 文件操作(2)
上一篇学习了用内置函数 open() 来打开文件,并且用 f.close() 来关闭文件。
今天来学习对这个文件对象的其他操作:读、写、找到文件当前位置……

1.读取文件
三种方法:
- read([size]),方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止。该方法返回一个字符串对象。
- readline(),该方法每次读出一行内容,所以,读取时占用内存小,比较适合大文件。该方法返回一个字符串对象。
- readlines(),该方法读取整个文件所有行,保存在一个列表中,每行作为一个元素,但读取大文件会比较占内存。
1.1 read()方法
with open("G:\Python\secret.txt",'r') as f:
f = f.read()
print(f)
print(type(f))
初次看见姑卡正是去年这个时候,她和她一家人住在我小屋附近的一幢大房子内,是警官罕地的大女儿。
那时的姑卡梳着粗粗的辫子,穿着非洲大花的连身长裙,赤足不用面纱,也不将身体用布缠起来,常常在我的屋外呼叫着赶她的羊,声音清脆而活泼,俨然是一个快乐的小女孩。
后来她来跟我念书,我问她几岁,她说:“这个你得去问罕地,我们沙哈拉威女人是不知道自己几岁的。”她和她的兄妹都不称呼罕地父亲,他们直接叫他的名字。罕地告诉我姑卡十岁,同时反问我:“你大概也十几岁吧?姑卡跟你很合得来呢。”我无法回答他这个荒谬的问题,只好似笑非笑的望着他。
半年多过去了,我跟罕地全家已成了很好的朋友,几乎每天都在一起煮茶喝。有一天喝茶时,只有罕地和他的太太葛柏在房内。罕地突然说:“我女儿快要结婚了,请你有便时告诉她。”我咽下一口茶,很困难的问他:“你指姑卡吗?”他是:“是,过完拉麻丹再十日就结婚。”拉麻丹是回教的斋月,那时已快开始了。
<class 'str'>
1.2 readline()方法
f = open("G:\Python\secret.txt",'r')
line = f.readline()
print(line)
print(type(line))
初次看见姑卡正是去年这个时候,她和她一家人住在我小屋附近的一幢大房子内,是警官罕地的大女儿。
<class 'str'>
f.readline()
' 那时的姑卡梳着粗粗的辫子,穿着非洲大花的连身长裙,赤足不用面纱,也不将身体用布缠起来,常常在我的屋外呼叫着赶她的羊,声音清脆而活泼,俨然是一个快乐的小女孩。\n'
f.readline()
' 后来她来跟我念书,我问她几岁,她说:“这个你得去问罕地,我们沙哈拉威女人是不知道自己几岁的。”她和她的兄妹都不称呼罕地父亲,他们直接叫他的名字。罕地告诉我姑卡十岁,同时反问我:“你大概也十几岁吧?姑卡跟你很合得来呢。”我无法回答他这个荒谬的问题,只好似笑非笑的望着他。\n'
f.close()
1.3 readlines()方法
f = open('G:\Python\secret.txt','r')
lines = f.readlines()
print(lines)
type(lines)
[' 初次看见姑卡正是去年这个时候,她和她一家人住在我小屋附近的一幢大房子内,是警官罕地的大女儿。\n', ' 那时的姑卡梳着粗粗的辫子,穿着非洲大花的连身长裙,赤足不用面纱,也不将身体用布缠起来,常常在我的屋外呼叫着赶她的羊,声音清脆而活泼,俨然是一个快乐的小女孩。\n', ' 后来她来跟我念书,我问她几岁,她说:“这个你得去问罕地,我们沙哈拉威女人是不知道自己几岁的。”她和她的兄妹都不称呼罕地父亲,他们直接叫他的名字。罕地告诉我姑卡十岁,同时反问我:“你大概也十几岁吧?姑卡跟你很合得来呢。”我无法回答他这个荒谬的问题,只好似笑非笑的望着他。\n', ' 半年多过去了,我跟罕地全家已成了很好的朋友,几乎每天都在一起煮茶喝。有一天喝茶时,只有罕地和他的太太葛柏在房内。罕地突然说:“我女儿快要结婚了,请你有便时告诉她。”我咽下一口茶,很困难的问他:“你指姑卡吗?”他是:“是,过完拉麻丹再十日就结婚。”拉麻丹是回教的斋月,那时已快开始了。']
list
lines[0] #每一行可作为一个元素
' 初次看见姑卡正是去年这个时候,她和她一家人住在我小屋附近的一幢大房子内,是警官罕地的大女儿。\n'
lines[2]
' 后来她来跟我念书,我问她几岁,她说:“这个你得去问罕地,我们沙哈拉威女人是不知道自己几岁的。”她和她的兄妹都不称呼罕地父亲,他们直接叫他的名字。罕地告诉我姑卡十岁,同时反问我:“你大概也十几岁吧?姑卡跟你很合得来呢。”我无法回答他这个荒谬的问题,只好似笑非笑的望着他。\n'
(三毛写的,高中读的撒哈拉~,推荐哦)

记得关件
f.close()

2.写入操作
两种方法:
- write(),该方法将字符串(仅支持字符串)写入文件,返回的是写入的字符长度。
- writelines(),该方法将字符串或者是列表写入文件,
2.1write()方法
f = open('G:\Python\secret.txt')
f.write('test_1')
---------------------------------------------------------------------------
UnsupportedOperation Traceback (most recent call last)
<ipython-input-10-53f5452c8e4b> in <module>()
1 f = open('G:\Python\secret.txt')
----> 2 f.write('test_1')
UnsupportedOperation: not writable
记住,一定要记得修改mode参数
f = open('G:\Python\secret.txt','w')
f.write('test_2')
6
f.close()
with open('G:\Python\secret.txt','r') as f:
print(f.read())
test_2
在'w'模式下,写入操作会将所有旧的内容都清除掉,然后写入新的东西。OR,如果没有这个文件,python将创建新文件,来把这个新来的宝宝安置在新的文件里。
2.2 writelines()方法
注意:
- 如果以list形式写入txt文件,可以写入多行;如果以str形式写入txt文件,则只能写入一行。
- 在list中的每个元素末尾,必须加上’\n’的换行符(显示输入),否则list中的各元素将写入到一行
with open('G:\Python\secret.txt','w') as f:
f.writelines(['test_2','test_3'])
with open('G:\Python\secret.txt','r') as f:
print(f.read())
test_2test_3
with open('G:\Python\secret.txt','w') as f:
f.writelines(['test_4\n','test_5\n'])
with open('G:\Python\secret.txt','r') as f:
print(f.read())
test_4
test_5
3.文件定位方法
3.1 tell()方法
当你在处理文件时,你想知道你现在在文件里的位置,可以用tell()实现。
f = open('G:\Python\secret2.txt', 'r')
content = f.read()
print('文件内容为:\n',content)
position = f.tell()
print('现在在文件的位置是:', position)
文件内容为:
BOSS is a little cat of mine. It was so cute and lovely.
I miss you.
My lovely cat.
现在在文件的位置是: 85
read()一下,就到了最后面的位置,我们现在在第85位哦。
现在我想把指针放到开头,要怎么办呢?
无问题,seek()帮你搞掂他。
3.2 seek()方法
seek(offset [,from])方法改变当前文件的位置。
Offset变量表示要移动的字节数(你想要移动多少步呀?)。
From变量指定开始移动字节的参考位置(你以谁为初始点去移动呀),默认值是0, 表示从文件开头作为起点。
- 如果from = 0,这意味着将文件的开头作为移动字节的参考位置。
- 如果from = 1,则使用当前的位置作为参考位置。
- 如果from = 2,那么该文件的末尾将作为参考位置。
f1 = open('G:\Python\secret2.txt', 'r')
f1.readline()
print('读取文件的一行后的位置:', f1.tell())
print('文件当前开始位置:', f1.seek(3, 0))
读取文件的一行后的位置: 58
文件当前开始位置: 3
f1.close()
但要注意,这里很容易出现报错。因为我们打开文件的方式,决定了我们能不能从特定的位置作为初始位置去定位我们想要的位置。
- 如果你想以文件开头作为初始位置(即from = 0),那么无论你以何种形式打开这个文件(r, w, b)都可以达到这个目的。
- 如果你想以当前位置或者文件末尾作为初始位置,那么你只能以b相关形式(二进制)去open这个文件。否则会报错。

f2 = open('G:\Python\secret2.txt', 'r')
f2.readline()
print('读取文件的一行后的位置:', f2.tell())
print('文件当前开始位置:', f2.seek(3, 1))
读取文件的一行后的位置: 58
---------------------------------------------------------------------------
UnsupportedOperation Traceback (most recent call last)
<ipython-input-18-35d5eacde913> in <module>()
2 f2.readline()
3 print('读取文件的一行后的位置:', f2.tell())
----> 4 print('文件当前开始位置:', f2.seek(3, 1))
UnsupportedOperation: can't do nonzero cur-relative seeks
Consequently, 请记住,文件的打开方式决定了你选择初始位置的权利。
所以,报错的时候不要惊讶!
最后,把打开的文件关上。
f2.close()
暂时记录到此为止
好了,又到吃零食的时候了,觅食觅食

Python 文件操作(2)的更多相关文章
- Python基础篇【第2篇】: Python文件操作
Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- Python文件操作与函数目录
文件操作 python文件操作 函数 Python函数学习——初步认识 Python函数学习——作用域与嵌套函数 Python函数学习——匿名函数 python内置函数 Python函数学习——递归 ...
- 初学Python——文件操作第二篇
前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...
- day8.python文件操作
打开和关闭文件 open函数 用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写. file = open(file_name [, access_ ...
- 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()
嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折 ...
- Python之路Python文件操作
Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...
- python 文件操作 r w a
python基础-文件操作 一.文件操作 对文件操作的流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 打开文件时,需要指定文件路径和以何等方式打开文件, ...
- Python:文件操作技巧(File operation)(转)
Python:文件操作技巧(File operation) 读写文件 # ! /usr/bin/python # -*- coding: utf8 -*- spath = " D:/dow ...
- 小学生都能学会的python(文件操作)
小学生都能学会的python(文件操作) 1. open("文件路径", mode="模式", encoding="编码") 文件的路径: ...
随机推荐
- CentOS 7 命令
常用命令 文件与目录操作 命令 解析 cd /home 进入 ‘/home’ 目录 cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd - 返回上次所在目录 cp file1 file ...
- 高级UI-符合MD的常用控件
在Google提供的控件中,在support-design及v4,v7包中,存在着很多符合MD标准的控件,这里罗列出一些常用的控件 TextInputLayout 这个控件在作为输入框的时候是极其方便 ...
- MacOS这idea快捷键
Control + Space 基本的代码补全(补全任何类.方法.变量) Control + Shift + Space 智能代码补全(过滤器方法列表和变量的预期类型) Command + Shift ...
- 日常工作问题解决:redhat6.9--解决yum功能不能正常使用和配置yum源
1.问题描述 解决RedHat6.9下yum功能不能用问题: 在redhat6.9下使用yum安装时,会提示:This system is not registered to Red Hat Subs ...
- sqlite 版本更新维护, 表结构判断, 更新
sqlite会自动维护一个系统表sqlite_master,该表存储了我们所创建的各个table, view, trigger等等信息. sqlite_master表数据字段: type: 类型,取值 ...
- SrpingBoot入门到入坟01-HelloWorld和SpringBoot打Jar包
第一个SpringBoot: 建立一个maven项目: 再pom.xml里面增加依赖: <?xml version="1.0" encoding="UTF-8&qu ...
- java--demo之猜拳游戏
版本1:人机大战 基础随机出 用户键盘录入 package com.hainiu.demo; import java.util.Scanner; /* * 人机大战石头剪刀布 */ publi ...
- js时间戳与日期格式之间相互转换
###js时间戳与日期格式之间相互转换 将时间戳转换成日期格式 // 简单的一句代码 var date = new Date(时间戳); //获取一个时间对象 /** 1. 下面是获取时间日期的方法, ...
- SAS学习笔记29 logistic回归
变量筛选 当对多个自变量建立logistic回归模型时,并不是每一个自变量对模型都有贡献.通常我们希望所建立的模型将具有统计学意义的自变量都包含在内,而将没有统计学意义的自变量排除在外,即进行变量筛选 ...
- Ubuntu 搭建 配置 nfs服务器
什么是NFS? NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NF ...