DAY 6 文件处理与编码转换
  aytBmQrH0Rjd 2023年12月15日 16 0

一、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')






【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月15日 0

暂无评论

推荐阅读
  2Fnpj8K6xSCR   2024年05月17日   101   0   0 Python
  xKQN3Agd2ZMK   2024年05月17日   70   0   0 Python
  Ugrw6b9GgRUv   2024年05月17日   40   0   0 Python
aytBmQrH0Rjd
作者其他文章 更多