2.29
操作文件
1
. 找到文件 打开
2
. 读, 修改
3
. 保存 关闭
1
. f.open(filename)
2. f.read(50
) 只读50个..
f.read() 不写数字就读所有,
f.write(YOURDATA)
3
. f.close()
----------------
文件打开模式 只能以一种方式
python比较变态,只能以读、创建、追加 3种模式中的任意一种打开文件,不能即写又读。
操作模式
r 只读模式
w 创建模式,若文件已存在,则覆盖旧文件
a 追加模式,新数据会写到文件末尾
创建文件
f = open(file=
'D:/工作日常/staff.txt',mode=
'w')
f.write("Alex CEO 600\n")
f.write("黑姑娘 行政 5000\n")
f.close()
只读模式
f = open(file=
'兼职白领学生空姐模特护士联系方式.txt',mode=
'r')
print(f.readline())
# 读一行
print(
'------分隔符-------')
data = f.read()
# 读所有,剩下的所有
print(data)
f.close()
追加模式
f = open(file=
'兼职白领学生空姐模特护士联系方式.txt',mode=
'a')
f.write("黑姑娘 北京 168 48\n")
# 会追加到文件尾部
f.close()
循环文件
f = open(file=
'兼职白领学生空姐模特护士联系方式.txt',mode=
'r')
for line
in f:
line =
line.split() split不添加参数默认是空格分隔, 分隔后每行是一个列表
name,addr,height,weight,phone =
line
height =
int(height)
weight =
int(weight)
if height > 170
and weight <= 50
:
print(line)
f.close()
f.seek() 走多少个字节.. ,如果是英文,每次1个, 如果是中文 每个汉字3个字节
f.flush() 强制刷到硬盘 为什么要强制刷新到硬盘,是因为 文件写入不是马上到硬盘的,都是临时存在
内存, 如果断电,就gg... 所以有了flush,而且还不需要f.close. 就可以直接到硬盘了.正常是f.close之后
才到硬盘
f.tell() 返回光标的位置
f.truncate(100
) 从0截断到100 如果里面不写数字,就从光标的位置到末尾 全部去掉
举例
f = open(
'空姐联系方式.txt',
'a',encoding=
'utf-8')
f.seek(9
)
print(f.tell())
f.truncate()
f.truncate() 如果不写数字,就从光标的位置9到末尾 全部没了
如果写了数字,这个时候又有seek,那么, seek失效,直接从0开始,从头开始截断到数字位置
-----------------------------
读
f.read 一次性读完, 读完是个str
f.readline 一次读一行 读完是个str
f.readlines 一次性读完所有行,,返回的是列表
-----------------------
2.33
混合模式下处理文件
w+
写读 , 这个功能基本没什么意义,它会创建一个新文件 ,写一段内容,可以再把写的内容读出来,没什么卵用。
r+
读写,能读能写,但都是写在文件最后,跟追加一样,, 不会覆盖源文件, 往后添加
a+
追加读,文件 一打开时光标会在文件尾部,写的数据全会是追加的形式
以上3种 都不常用
--------------
修改文件 r+
f = open(
'空姐联系方式.txt',
'r+',encoding=
'utf-8')
f.seek(6
)
f.write("你好")
我想你好456789 123456你好你好你好
我想请123456789 123456你好你好你好
以上2行内容本来意义,执行代码后偏移6个字节,后,请123,变成了你好. 你好占了6个字节,所以 请123被吃掉了
---------------
转载于:https://www.cnblogs.com/666sss/p/11582650.html