课上笔记(4)(文件操作)
程序员文章站
2024-01-29 19:44:52
...
课上笔记(4)(文件操作)
- 学习使我快乐
文件的打开与关闭
文件处理的步骤:打开,操作,关闭
在不对文件进行任何处理时,文件处于存储状态
如果要对该文件进行处理,首先我们要使该文件处于占用状态
存储状态 ←———— 文件存储在硬盘中(个人理解成:等活)
占用状态 ←———— 只有一个程序可以对该文件进行处理(个人理解成:垄断)
而打开(open),关闭(close)就是对 存储状态 和 占用状态 进行 状态转换 的
- open:
固定格式是:open(‘文件名.文件格式’, ‘打开方式’)
打开方式分为:
r :只读
w :覆盖掉原有,进行重写
a :在原有上进行添加
b :二进制打开(与其他模式混合使用)比如:f = open(‘a.txt.txt’, ‘rb’)
+:读,写(与其他模式混合使用)比如:f = open(‘a.txt.txt’, ‘r+’)
文件名:a.txt
其内容:
abc123
输入:
f = open('a.txt.txt', 'r')
print(f.read())
f.close()
输出:
abc123
在打开文件以后,我们可以对其进行读和写的操作,常见的读文件函数和写文件函数如下
读文件函数:
- f.read(x) ←———— 读取文件中前x个字节,可省略,如省略则读取所有内容
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345
输入:
f = open('a.txt.txt', 'r')
print(f.read(10))
f.close()
输出:
abc 123
ab
- f.readline() ←———— 从文件中读取第一行内容作为结果返回
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345
输入:
f = open('a.txt.txt', 'r')
print(f.readline())
f.close()
输出:
abc 123
- f.readlines() ←———— 把文件的每行作为一个字符串塞进列表返回
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345
输入:
f = open('a.txt.txt', 'r')
print(f.readlines())
f.close()
输出:
['abc 123\n', 'abc 1234\n', 'abc 12345']
写文件函数:
- write ←———— 把字符串s的内容写入文本文件
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345
输入:
f = open('a.txt.txt', 'a')
s = 'abc\n123'
f.write(s)
f.close()
运行:
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345abc
123
- writelines(s) ←———— 把字符串列表写入文本文件
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345
输入:
f = open('a.txt.txt', 'r+')
s = ['abc 123\n', 'abc 456']
f.writelines(s)
f.close()
运行:
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345abc 123
abc 456
关于文件的对象属性的一些操作方法:
- seek ←———— 更改指针的位置
两个参数,一个是偏移量,一个是基准量(默认为0为从文件头开始,1为当前位置,2为文件末尾开始计算)
公式:seek(x,y)x是推移的字节数,y是从哪里开始计算偏移
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345
输入:
f = open('a.txt.txt', 'r')
print(f.read(3))
print('————')
print(f.read(3))
f.close()
输出:
abc
————
12
不知道为什么
y不能是非0!。y可以是0,但是y不能是非0!
相当于是y可以存在,但是y只能是0!
否则报错:
io.UnsupportedOperation: can’t do nonzero cur-relative seeks
seek就是把指针从y(0:从头,1:从当前,2:从末尾)向后推x个字节
- 从头开始
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345
输入:
f = open('a.txt.txt', 'r')
print(f.read(3))
print('————')
f.seek(1,0)
print(f.read(3))
f.seek(2,0)
print(f.read(3))
f.close()
输出:
abc
————
c 1
bc
- 从当前开始
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345
输入:
f = open('a.txt.txt', 'r')
print(f.read(3))
print('————')
f.seek(2,1)
print(f.read(3))
f.close()
输出:
abc
————
123
- 从末尾开始
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345
输入:
f = open('a.txt.txt', 'r')
print(f.read(3))
print('————')
f.seek(2,2)
print(f.read(3))
f.close()
输出:
abc
————
- closed ←———— 判断文件是否关闭,关闭则返回True
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345
输入:
f = open('a.txt.txt', 'a')
print(f.closed)
f.close()
print(f.closed)
输出:
False
True
- mode ←———— 返回文件的打开模式
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345
输入:
f = open('a.txt.txt', 'a')
print(f.mode)
f.close()
输出:
a
- name ←———— 返回文件的名称
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345
输入:
f = open('a.txt.txt', 'a')
print(f.name)
f.close()
输出:
a.txt.txt
关闭文件的方法:
- close ←———— 把缓存区的内容写入文件,关闭文件
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345
输入:
f = open('a.txt.txt', 'a+')
print(f.read())
s = 'abc\n123'
f.write(s)
f.close()
print('close以后')
print(f.read())
输出:
abc 123
abc 1234
abc 12345
close以后
报错:
ValueError: I/O operation on closed file.
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345abc
123
- flush ←———— 把缓存区的内容写入文件,但是不关闭文件
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345
输入:
f = open('a.txt.txt', 'a+')
s = 'abc\n123'
f.write(s)
print(f.read())
f.flush()
print('flush以后')
print(f.read())
f.close()
运行:
输出:
abc 123
abc 1234
abc 12345
flush以后
abc 123
abc 1234
abc 12345abc
123
文件名:a.txt
其内容:
abc 123
abc 1234
abc 12345abc
123
上一篇: linux vim 操作笔记
下一篇: Html5 新增标签与属性