首页 > 其他分享 >DAY 6 文件处理与编码转换

DAY 6 文件处理与编码转换

时间:2023-12-15 15:06:34浏览次数:32  
标签:编码 转换 文件 open contacts encoding file data DAY

一、Python文件操作

对文件的操作有2种,文本文件、二进制文件(视频、图片等)

1.1 open方法基本使用

open(file, mode='r', encoding=None);

几种打开模式

'r'		open for reading (default)
'w'		open for writing, truncating the file first (写模式,如果文件在,先清空【危险】)
'x'		create a new file and open it for writing (python3新增,创建模式,如果文件在,会报错)
'a'		open for writing, appending to the end of the file if it exits (日志)
'b'		binary mode (二进制文件)
't'		text mode (default) (文本)
'+'		open a disk file for updating (reading and writing)

*The default mode is 'rt' *

一个文件对象被open方法创建后,这个对象可用的有下面这些方法

close 	关闭文件
closed	查看文件是否已关闭
encoding	返回文件的编码
flush		把缓存里的写入数据强制刷新硬盘
isatty	返回文件是否是'interactive'数据流,比如是个命令行终端,(在unix系统,一切皆文件)
mode	返回当前文件模式
name	返回文件名
read	读指定长度的内容,f.read(1024)读1024字节,不指定参数的话,就读所有内容
readable	文件是否可读
readline	读一行
readlines 	读所有,每行列表形式返回
seek		把光标移到指定位置
seekable	该文件光标是否可移动
tell		返回当前光标位置  (迭代器中不能用)
truncate	截断文件,f.truncate(100),从文件 开头截断100个字符,后边的都扔掉
writable	是否可写
write		写内容
writelines 	把一个列表写入,每个元素是一行
model_contacts.txt
姓名		地区		身高		体重		电话
况咏蜜	北京		171		48		13651054608
王心颜	上海		169		46		13813234424
马纤羽	深圳		173		50		13744234523
乔亦菲	广州		172		52		15823423525
罗梦竹	北京		175		49		18623423421
刘诺涵	北京		178		48		18623423765
岳妮妮	深圳		177		54		18835324553
贺婉萱	深圳		174		52		08933434452
叶梓萱	上海		171		49		18042432324
杜姗姗	北京		167		49		13324523342
f=open("model_contacts.txt")
# data=f.readO#读所有
# print(data)
# data=f.read(2)#代表18个字符呢?还是字节?
白#print(data)
print(f.readline())
print(f.readline())
print(f.readline())

for line in f:
  if "梓宣" in line:
  	print(line)
    
    
f.seek(0) #光标移动到开头

/注意:在文本模式下,这个3是代表3个字符,在二进制f模式下,这个3是代表3个字节。

1.3 追加模式

f = open('model_contacts.txt',"a")

注意:追加模式,即使通过f.seek()把光标移到其它位置,再f.write()的时候,依然是写到最后的。

但是f.seek(10),然后再f.truncate(),会实现文件截断,只保留10个字符。

1.4 修改

r+是修改模式

直接调用f.write()会从开头开始写,然后会往后覆盖(一个中文3个字节)...如果只覆盖了后边某一个文字的一半,就会出现乱码。

**seek是移动字节**

**tell返回字节数**

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
f = open("model_contacts.txt", "r+", encoding='utf-8')

# 1.先把文件内容加载到内存
# 2.替换要改的部分
# 3.清空原文件内容
# 4.把新内容写回去

data = f.read()

# 备份
back_file = open("model_contacts.txt.bak", "w", encoding="utf-8")
back_file.write(data)
back_file.close()

data_new = data.replace("马纤羽", "刘翠花TracyLiu")  # 把马纤羽改成刘翠花TracyLiu
f.seek(0)  # 移动到文件的开头位置
f.truncate()  # 清空原文件
f.write(data_new)
f.close()

 1.5 删除

import os
os.remove("文件名")

1.6 处理不同编码的文件

     Mac操作系统,系统默认编码是utf-8,open方法会默认用utf-8格式打开所有文件。

     但windows是gbk,若收到别人从windwos上发一个文件,是gbk编码的,我直接打开会出现什么情况?

文件头# -*- encoding:gbk -*-

声明的作用是告诉解释器,后面的代码是用什么编码的.

f = open("model_contacts.txt", "r+", encoding='utf-8')






标签:编码,转换,文件,open,contacts,encoding,file,data,DAY
From: https://blog.51cto.com/yngwie/8840950

相关文章

  • JavaWeb - Day08 - MySQL - 多表查询、事务、索引 - Mybatis - 入门
    01.MySQL-多表查询-概述数据准备#建议:创建新的数据库createdatabasedb04;usedb04;--部门表createtabletb_dept(idintunsignedprimarykeyauto_incrementcomment'主键ID',namevarchar(10)notnulluniquecomment'部门名称',......
  • 哈夫曼树和哈夫曼编码
      路径:由树中一个结点到另一个结点之间的分支构成。路径长度:路径上分支的数目。树的带权路径长度:树中所有叶子结点的路径长度与权重的乘积之和,通常记作WPL。 WPL=2*6+2*9+3*2=36 带权路径长度WPL最小的二叉树称作最优二叉树或赫夫曼树。   设一组权值集合W=......
  • Day05 变量
    Day05变量定义:在程序执行过程中,其值有可能发生改变的量(数据)使用场景:当某个数据经常发生改变时,我们也可以用变量存储。当数据变化时,只要修改变量里面变化的值即可。变量的定义格式数据类型变量名=数据值;(数据值:存在空间里面的数值)(变量名:为空间起的名)(数据类型:为空间......
  • 算法Day2双指针法排序,滑动窗口,螺旋矩阵
    Day2双指针法排序,滑动窗口,螺旋矩阵ByHQWQF2023/12/14笔记977.有序数组的平方https://leetcode.cn/problems/squares-of-a-sorted-array/返回一个非递减顺序排序的整数数组每个元素的平方后组成的新数组,新数组也按非递减顺序排序。解法:双指针法由于给定数组本身是有序的,......
  • 冲刺(day4)
    团队任务总结 一、团队成员任务分配为推动项目进展,团队今天共同完成了登录页面的设计与编码。以下是团队成员在页面开发中的任务分配和进展:张钰权:负责整体页面布局和样式设计,确保页面在不同设备上的良好显示。周绍坤:主要负责表单元素的设计和样式调整,提高用户体验,确保信息......
  • Day04
    Day04注释注释的分类单行注释//注释信息多行注释/*注释信息*/文档注释/**注释信息**/注释的注意事项注释的内容不参与编译也不参与运行的多行注释会以最近的"*/"作为注释的结尾,不管是单行注释还是多行注释,在书写的时候都不要嵌套关键字关键字的特点......
  • Day30 了解什么是方法
    什么是方法?System.out.printin(),那么它是什么呢?(System是类out是一个对象printin则是方法)​意思是调用系统中的一个对象中的发放Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程......
  • 关于EthernetIP转ModbusTCP协议转换的成熟应用
    在现代工业自动化领域,以太网和互联网的集成已经成为一种趋势。Ethernet/IP转ModbusTCP网关作为一种关键的通信设备,能够实现以太网和ModbusTCP协议之间的转换,从而在工业自动化领域中发挥重要作用。本文将详细介绍Ethernet/IP转ModbusTCP网关的应用和配置方法。Ethernet/IP转Mo......
  • 实现XML与JSON转换,实测这个方法最便捷
    XML和JSON是当今最常用的两种数据格式,在数据交换和存储领域占有重要地位。XML以其树状结构和可扩展性被广泛使用,而JSON则以其轻量级和易读性受到开发者的青睐。有时候,为了更好地利用它们的优点解决数据共享、数据处理和数据存储等问题,我们需要将这两种格式进行转换。本文将介绍如......
  • C++学习笔记十一:数据类型的转换
    一个表达式里的所有变量应该具有相同的类型。上溢和下溢(overflowandunderflow):1.隐式转换(implicitly):编译器自动进行。总是把占用内存小的数据类型转化为占用大的数据类型。int类型转换为doubledoubleprice{45.6};intunits{10};autototal_price=price*un......