小甲鱼零基础学习python_16 【python里关于文件读写的那些事儿】

今天学习了python的文件读写,可以说是第一次真正的了解一个文件打开后操作的每步,之前用c写文件读写的操作的代码,都是一知半解,这次可以说是一步一步的学习从打开到关闭之间的过程。
先引入两个python关于文件操作的操作方法的表格:
(图片转载自wuza小甲鱼系列入门练习15

这里写图片描述

一. 这次先从文件的打开到关闭,把打开模式以及相关流程介绍一下:

文件的打开方法是调用open()函数,open() 打开文件并返回文件对象
open(file, mode='r', buffering=None, encoding=None, 
        errors=None, newline=None, closefd=True)

可以看到open()函数定义时,仅仅只有第一个file参数必填,其他都有默认值,目前我所学的程度,只需要理解file参数,和第二个mode参数;

file参数:文件的路径

格式可以是:D:\hello.txt ; 也可以是:D:/hello.txt

mode参数:打开模式
这里写图片描述

可以从open()的定义里查看函数文档得知:

打开模式模式内容
‘r’open for reading (default)
‘w’open for writing, truncating the file first
‘x’create a new file and open it for writing
‘a’open for writing, appending to the end of the file if it exists
‘b’binary mode
‘t’text mode (default)
‘+’open a disk file for updating (reading and writing)
‘U’universal newline mode (deprecated)

The default mode is ‘rt’ (open for reading text)
可以看到默认的模式是以文本模式打开,只读。

1. 先打开一个文件:

调用open()方法打开一个文件(下面几个模式举例子,但代码万万不能这么连着写)
1. f=open('D:\\hello.txt','rt')  # r 只读   t以文本模式打开
2. f=open('D:\\test.txt','w')  # w 写入
以只读方式打开一个文本类型的文件,路径是D:\hello.txt;open() 打开文件并返回文件对象,把文件对象保存给f,此后可以对 f 进行操作。


2. 关闭一个文件:

调用close()方法关闭一个文件

c里一定要关闭文件 可能会造成内存泄漏; 虽然python里有垃圾回收机制,但是最好还是养成关闭文件的习惯

f.close()


3. 一些基本操作:

a. 文件的读取:

①. read(size)方法,按字节读取size个字符;
→ 如果size不设置或者-1 则会全部读取文件指针后剩余字符,指针逐步后移直至最后一位
f=open('D:\\hello.txt','rt') ![这里写图片描述](https://img-blog.csdn.net/20180822123048762?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FrYV9IYXBweQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
print(f.read(-1))
f.close()

这里写图片描述

→ 指定size个字符
f=open('D:\\hello.txt','rt') 
 # r 只读   t以文本模式打开   可以用\\ 也可以用/
print(f.read(5))

这里写图片描述

②. tell() 可以得出当前指针的位置 ,按字节数( 一个中文字符占两个字节)
print(f.tell())

这里写图片描述

③. seek(offset,from) 偏移文件指针的位置,从from位置(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
f.seek(7,0)
print(f.readline())
#readline 读取剩余的一行

这里写图片描述

b. 文件的写入:

writelines(seq) 入口参数是一个字符串序列seq seq应该是一个返回字符串的可迭代对象 可以是一个列表,可以是一个元组…
(会覆盖原有内容)
f=open('D:\\test.txt','w')  # w 写入
print(f.write('i love 猪文豪!'))  #返回写入字符个数
f.close()

这里写图片描述

这里写图片描述



4. 小实践 - - 读入文件,按行输出:

准备一个文件:
这里写图片描述

a. 转化为列表来处理
f=open('D:\\hello.txt','rt') 

f.seek(0,0)
lines = list(f)
print(lines)    #输出列表
for eachline in lines:
    print(eachline)   #输出文字

f.close()

列表输出结果:
这里写图片描述

文字输出结果:
这里写图片描述

但是经过几次搬运,这样子的效率并不高,转化成列表的过程很没有效率

b. 可以直接用for 把文件对象给迭代出来,效率很高
f=open('D:\\hello.txt','rt') 

f.seek(0,0)
for eachline in f:
    print(eachline)

f.close()

输出结果:
这里写图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值