Python的文件操作——IO

目录

一、IO

二、操作 

(一)操作流程:

1.打开或创建:

 2.打开和关闭系统资源

三、文件打开模式

四、操作文件对象常用方法

open(filename[,moding,encoding])

 with xxx as name:

五、文件操作的实例

(一)分析

(二)步骤

1.读取

2.写入


一、IO

        IO即 input 与 output ,数据就如水流在水管中流向磁盘(类似队列,先进先出)

二、操作 

        Python解释器在运行.py文件时用到操作系统(OS)及其资源,.py文件里的代码就是通过调用才做系统操作磁盘上的文件(及读写磁盘里的文件)

 

(一)操作流程:

1.打开或创建:

        打开:读取已有(文件->程序)

        创建:将数据写入新文件(程序->文件)

 

 2.打开和关闭系统资源

        在操作文件时会调用操作系统资源,在操作完文件后记得关闭

三、文件打开模式

        这里的b通常用于与r、w一起使用读写操作图片、视频等

四、操作文件对象常用方法

open(filename[,moding,encoding])

        可用于打开文件(记得close())

  • filename:文件名
  • moding:打开模式(默认只读)
  • encoding:系统中默认文本文件字符编码格式为gbk,而 Python 中编译默认编码格式为UTF-8,有中文时记得设置编码

 with xxx as name:

        with可以管理上下文资源,无论什么原因跳出该模块,系统资源都将自动关闭,达到释放资源的目的

        这里的xxx称为上下文表达式,结果为上下文管理器

        解释:一个类对象实现了__enter__()与__exit__()方法,则这个类对象遵守了上下文协议,该类的实例对象就是上下文管理器,如下图的 open() 就是上下文管理器,with 缩进内的都为 with 语句体

        执行的顺序:调用执行__enter__方法 --> 调用执行 with 语句体 --> 调用执行__exit__方法,无论是否产生异常都会调用两个方法,__exit__进行退出后会自动关闭资源

五、文件操作的实例

        现有一 .txt 文件,一共有28万多条数据,我希望将每两万行读取数据并写入到一个新文件中,表格其实可以使用 pandas 和 xlwings 库,但是发现自己的电脑只有WPS,不兼容的问题还不知道怎么解决,所以只好用这种方法了

(一)分析

        首先是将原文件读取,写入到目标文件,有28万多条数据,就需要创建15个文件进行写入,这可以通过循环是实现

(二)步骤

1.读取

import math
# 文件数量需要向上取整

# 只读,内部有中文,使用gbk编码模式
with open(r'C:\Users\yysc\Desktop\会员群组会员卡号导入.txt',mode='r',encoding='gbk') as src_file:
    tel_list=src_file.readlines()
    print(tel_list)
# print(math.ceil(len(tel_list)/20000))

         可以得到一个列表:

2.写入

table=0    # 用于赋给表名
location=1   # 用于遍历列表元素逐条写入

for i in range(0,math.ceil(len(tel_list)/20000)):    # 长度/20000向上取整
    table+=1    # 第一张表开始
    with open(r'C:\Users\yysc\Desktop\会员电话卡号%s.txt'% table,'w',encoding='gbk') as target_file:
        target_file.write('会员卡号\n')
        for k in range(0, 20000):    # 这里注意细节,有一次只有19999条数据
            target_file.write(tel_list[location])
            print(location)    # 只是看看循环次数
            location+=1

        这里使用了 location 变量结合循环来遍历列表并写入对应文件,列表的第一个元素是字符'会员卡号',为了简便我直接从第一个号码开始遍历,然后在循环里加上该表头

        操作成功(虽然会报错,不过应该是因为最后一个表没有20000条数据报了索引的错误,核对后并不影响写入的结果)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

带带琪宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值