文件
open(path [, mode[, buffering]])
path
就是路径mode
就是打开模式buffering
一般不用第3个参数,我也不知道啥用处
- 官网解释:如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
模式 | 执行操作 |
---|
‘r’ | 读的方式打开文件(默认) |
‘w’ | 已写的方式打开文件,覆盖已存在的文件 |
‘x’ | 如果文件已经存在,使用此模式打开将引发异常 |
‘a’ | 以写入模式打开,如果文件存在,则在末尾追加写入 |
‘b’ | 以二进制模式打开文件 |
‘t’ | 以文本模式打开(默认) |
‘+’ | 可读写模式(可添加到其他模式中使用) |
‘U’ | 通用换行符支持 |
方法 | 操作 |
---|
.close() | 关闭文件 |
.read(size = -1) | 从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回 |
.readline() | 方法用于从文件读取整行,包括 “\n” 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 “\n” 字符。 |
.write(str) | 以写入模式打开,如果文件存在,则在末尾追加写入 |
.writelines(seq) | 向文件写入字符串序列seq,seq应该是-一个返回字符串的可迭代对象 |
.seek(offset, from) | 在文件中移动文件指针,从from ( 0代表文件起始位置,1代表当前位置, 2代表文件末尾)偏移offset个字节 |
.tell() | 返回当前在文件中的位置 |
f = open('F:\\Danaconda python\\py_l\\2021.2.26\\dome.txt')
f.read()
f.read(5)
f.close()
例子
lkj:fskdajf
wyc:fjsakdlfj
lkj:fskdajf
========================================
wyc:fjsakdlfj
lkj:fskdajf
wyc:fjsakdlfj
def save_file(boy, girl, count):
file_name_boy = 'boy_' + str(count) + '.txt'
file_name_girl = 'girl_' + str(count) + '.txt'
boy_file = open(file_name_boy, 'w')
girl_file = open(file_name_girl, 'w')
boy_file.writelines(boy)
girl_file.writelines(girl)
boy_file.close()
girl_file.close()
def split_file(filename):
f = open(filename)
boy = []
girl = []
count = 1
for each_line in f:
if each_line[:6] != '======':
(role, line_spoken) = each_line.split(':', 1)
if role == 'lkj':
boy.append(line_spoken)
if role == 'wyc':
girl.append(line_spoken)
else:
save_file(boy, girl, count)
boy = []
girl = []
count += 1
save_file(boy, girl, count)
f.close()
split_file('dome.txt')
- 最终得到4个文件
![文件](https://i-blog.csdnimg.cn/blog_migrate/7444f373ab92fbff2c615a430758599a.png)