python笔记7

文件

  • 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) # 读里面的内容的前5个字节
f.close() # 关闭已打开的文件

例子

  • 保存好dome.txt
lkj:fskdajf
wyc:fjsakdlfj
lkj:fskdajf
========================================
wyc:fjsakdlfj
lkj:fskdajf
wyc:fjsakdlfj
  • 新建一个python文件
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) #1.打开文件
    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个文件
    文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值