文件
在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。