Python文件操纵

打印 上一主题 下一主题

主题 1048|帖子 1048|积分 3144

什么是编码?
编码就是一种规则聚集,记载了内容和二进制间举行相互转换的逻辑。编码有很多种,我们最常用的是UTF-8编码。
文件的读取
内存中存放的数据在计算机关机后就会消失。要长期生存数据,就要利用硬盘、光盘、U 盘等设备。为了便于数据的管理和检索,引入了“文件”的概念。一篇文章、一段视频、一个可执行程序,都可以被生存为一个文件,并赋予一个文件名。操纵系统以文件为单元管理磁盘中的数据。一样平常来说,文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别。
文件操纵主要有以下几种:打开、关闭、读、写
**打开文件:**在python中,利用open函数,可以打开一个已经存在的文件。文件不存在就会报错
  1. 语法:open(name,mode,encoding)
复制代码
**name:**是要打开的目的文件名的字符串(可以包含文件所在的具体路径)。mode:设置打开文件的模式(访问模式):只读、写入、追加等。encoding:编码格式(推荐利用UTF-8)。注意:由于encoding的次序不在第三位,所以不能利用位置参数,利用关键字参数直接指定。
  1. f = open('D:\pycharm\python_study\python.txt', 'r', encoding='UTF-8')
复制代码
读操纵相干方法:
**read()方法:**num表示要从文件中读取的数据的长度(单元是字节),如果没有传入num,那么就表示读取文件中全部的数据。如果在程序中多次调用read函数,下一个read函数是从上一个read函数结尾处开始。
  1. 文件对象.read(num)
复制代码
  1. f = open('D:\pycharm\python_study\python.txt', 'r', encoding='UTF-8')
  2. ``print(f'读取10个字节的内容{f.read(10)}')``print(f'读取10个字节的内容{f.read(10)}')
复制代码
  1. 读取10个字节的内容Hello,pyth``读取10个字节的内容on world!你
复制代码
readline()方法:只读取一行的内容,而且返回的是一个字符串。读取时会将换行符读入。
readlines()方法:readlines可以按照行的方式把整个文件中的内容举行一次性读取,而且返回的是一个列表,其中每一行的数据为一个元素。读取时会将换行符读入。
  1. f = open('D:/pycharm/python_study/python.txt', 'r', encoding='UTF-8')``print(f'读取文件后类型为:{type(f)}')``line1 = f.readline()  # 读取文件第一行,封装到字符串中``line2 = f.readline()  # 读取文件第一行,封装到字符串中``print(f'读取文件第一行的内容为:{line1},类型为{type(line1)}')#读取时有一个换行符``print(f'读取文件第二行的内容为:{line2},类型为{type(line2)}')``f.close()
复制代码
  1. 读取文件后类型为:<class '_io.TextIOWrapper'>``读取文件第一行的内容为:Hello,python world!,类型为<class 'str'>``读取文件第一行的内容为:你好,新世界!,类型为<class 'str'>
复制代码
  1. f = open('D:/pycharm/python_study/python.txt', 'r', encoding='UTF-8')lines = f.read``lines()  # 读取文件所有行,封装到列表中``print(f'读取文件所有行的内容为:{lines},类型为{type(lines)}')``f.close()
复制代码
  1. 读取文件所有行的内容为:['Hello,python world!\n', '你好,新世界!'],类型为<class 'list'>
复制代码
for循环读取文件行
  1. for line in open('python.txt','r',encoding='UTF-8'):`    `print(line)
复制代码
  1. Hello,python world!#print会自动换行并且会读取文本中的换行符。``你好,新世界!
复制代码
关闭文件对象:f.close()
主动关闭文件对象:with open() as f:这种方法不需要利用close函数关闭文件,会主动关闭。
  1. with open('python.txt', 'r', encoding='UTF-8') as f:`    `for line in f:`                `print(line, end='')
复制代码
  1. Hello,python world!``你好,新世界!
复制代码
案例:单词计数
  1. with open('python.txt', 'r', encoding='UTF-8') as f:`    `list = []`        `for line in f:  # 得到每一行字符串`        `line1 = line.strip()  # 去除字符串前后空白以及换行符`        `line2 = line1.split(' ')  # 分割后得到的是数组`        `list.extend(line2)  # 将数据全部添加到另一个数组中`     `print(list)  # 打印数组内容`     `print(list.count('itheima'))
复制代码
  1. ['itheima', 'itcast', 'python', 'itheima', 'python', 'itcast', 'beijing', 'shanghai', 'itheima', 'shenzhen', 'guangzhou', 'itheima', 'wuhan', 'hangzhou', 'itheima', 'zhengzhou', 'bigdata', 'itheima']``6
复制代码
  1. with open('python.txt', 'r', encoding='UTF-8') as f:`    `content = f.read()`    `print(content)  # 打印字符串内容`      `print(content.count('itheima'))
复制代码
  1. itheima itcast python``itheima python itcast``beijing shanghai itheima``shenzhen guangzhou` `itheima wuhan hangzhou` `itheima zhengzhou bigdata itheima``6
复制代码
文件写入:f.write(“内容”),'w’模式如果文件不存在,会主动创建一个新文件,如果文件存在,会将内容清空。write()只是写入到缓冲区,并没有写入文件中,再利用,利用flush()函数****刷新一下即可,或者利用close()函数,它自带flush()函数的功能。因此要先将全部要写入的内容先写入到缓冲区flush()函数,否者下次写入会将内容清空。
  1. f = open('test.txt', 'w', encoding='UTF-8')``f.write('你的名字')  # 写入内容``f.flush()  # 刷新内容到硬盘中``f.close()  # 自带flush()功能
复制代码
文件的追加:
打开文件时,设置为**'a**'即可,文件不存在时,会创建文件;文件存在时,会在最后,追加写入文本内容。
**案例:**将其中的测试那一行数据去除,其余的数据写入到另一个文件中。

  1. f1 = open('bill_copy.txt', 'w', encoding='UTF-8')  # "w"模式下每次写入会将原有数据清楚``with open('bill.txt', 'r', encoding='UTF-8') as f:  # 这种会自动使用close文件`    `for line in f:`          `if '测试' in line:`                     `continue`                   `else:`                              `f1.write(line)``f1.close()
复制代码
  1. f1 = open('bill_copy.txt', 'w', encoding='UTF-8')  # "w"模式下每次写入会将原有数据清楚``f2 = open('bill.txt', 'r', encoding='UTF-8')``for line in f2:`    `line1 = line.strip()`        `line2 = line1.split(',')`        `if line2[4] == '测试':`            `continue`        `else:`         `f1.write(line)``f1.close()``f2.close()
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

圆咕噜咕噜

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表