Python——文件操作

文件

在linux操作系统中,我们可以通过文件的使用来和系统实现交互
打开一个文件,会消耗一个文件描述名,文件不关闭的话,打开文件的个数越来越多,会报错

在这里插入图片描述

1.文件相关操作

打开文件的步骤:打开 --> 操作 --> 关闭
在这里插入图片描述

打开文件:

f = open('/hello/passwd')

在这里插入图片描述
读操作:

readbale 是否可读
writeable 是否可写

f = open('/hello/passwd')
content = f.read()
print(content)
print(f.readable())
print(f.writable())

在这里插入图片描述
写操作:

f = open('/hello/passwd','w')
print(f.readable())
print(f.writable())

在这里插入图片描述
添加了w,代表写,报错是因为文件本身对运行pycharm的kiosk用户没有写权限。
修改实现如下:
在这里插入图片描述
在这里插入图片描述
关闭文件:

f.close()

对文件的写有这几种方式:
r:(默认)
-只能读,不能写
-读取的文件不存在,会报错

在这里插入图片描述
在这里插入图片描述
r+:
-可读写
-文件不存在,报错
-默认从文件指针所在位置开始写入
在这里插入图片描述
在这里插入图片描述
默认从文件指针的位置写入,所以这种情况下会覆盖掉文件指针所在地方原来的内容。

w:
-只能写
-会清空文件之前的内容
-文件不存在,不会报错,会创建新的文件并写入
w 相当于重定向

在这里插入图片描述
在这里插入图片描述
文件不存在时:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

w+:
-可读写
-会清空文件内容
-文件不存在,不会报错,会创建新的文件并写入

在这里插入图片描述
在这里插入图片描述
a: 追加
-只能写
-文件不存在,不报错
-不会清空文件内容

文件存在时:
在这里插入图片描述
在这里插入图片描述
文件不存在时:
在这里插入图片描述
在这里插入图片描述
a+:
-可读写
-文件不存在,不报错
-不会清空文件内容

文件不存在时:
在这里插入图片描述
在这里插入图片描述

查看文件指针当前所在位置:

f = open('/hello/passwd','r+')
print(f.tell())
f.write('python')
print(f.tell())
content = f.read()
print(content)
f.close()

在这里插入图片描述
在这里插入图片描述
注:在上图中添加python是从指针0开始到指针6结束,在读取的时候发现没有添加的内容,但是在shell中打开原文件就可以看到写入的值在指针0到6
读完之后写,指针就指向文件最后,写到最后。

文件的读取操作

readlines():读取文件内容,返回一个列表,列表里的元素分别为文件每行的内容

head -c 4 passwd     #查看该文件中的前4个字节

read方法:读完整个文件,文件指針已经指向文件末尾,所以readline方法和readlines方法的打印结果为空。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
同上图
在这里插入图片描述

注:默认情况下读取文件的所有内容,小文件可以直接用read读取,如果是大文件(文件大小>内存大小),不能通过read一次性读取所有内容

文件的写入操作

在这里插入图片描述
在这里插入图片描述

移动文件指针

seek方法,移动指针
seek的第一个参数是偏移量:>0,表示向右移动,<0表示向左移动
seek的第二个参数是:
0:移动指针到文件开头
1:不移动指针
2:移动指针到末尾

在这里插入图片描述
在这里插入图片描述
-1是指向左移动
在这里插入图片描述

非纯文本文件的读取
  • 读取文本文件
    r r+ w w+ a a+
  • 读取二进制文件 如:图片 视频
    rb rb+ wb wb+ ab ab+

实现非纯文本文件的复制如下:
在这里插入图片描述

上下文管理器
  • 打开文件的另一种简便方法:
    在这里插入图片描述

  • 同时打开两个文件:
    在这里插入图片描述
    with 执行完自动关闭,不用写close。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值