IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> python 文件基本操作-1 -> 正文阅读

[网络协议]python 文件基本操作-1

1 每日速记

allotment: n.分配;份额;<英>划分的土地

2 字符编码

??2.1字符编码的介绍

??字符编码只跟文本文件有关。
??字符编码表:内部存储了计算机二进制数字与人类字符对应关系的表。

??2.2 字符编码的发展史

??一家独大:
??????ASCII码:记录了英文字母与数字的对应关系。通常用一字节(8bit,共可表示127个字符)来表示单个字符。
??常见ASICII码:A-Z 65-90 a-z 97-112
![ASCII码表](https://img-blog.csdnimg.cn/babd6f061dcd442a9381b99b7821cd0a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAd2VpeGluXzQwNTc0MTA5,size_17,color_FFFFFF,t_70,g_se,x_16

??群雄割据
????GBK码(中国):《汉字内码扩展规范》,记录汉字与计算机数字的对应关系。
??双字节编码,范围为:8140-FEFE

????shift_JIS码(日本): 一个日本电脑系统常用的编码表。它能容纳全角及半角拉丁字母、平假名、片假名、符号及日语汉字。

????Euc_kr码(韩国):用来储存韩国KSX1001字集(旧称KSC5601)的字符

??天下一统
????unicode(万国码):是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。

????utf8(转换版本有多种,功能都是为了优化万国码的存储):UTF-8的特点是对不同范围的字符使用不同长度的编码。对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同。UTF-8编码的最大长度是4个字节。

??2.3 字符编码的实际应用

????字符不乱码:只要保证源文本文件是用什么编码方案编码的,就用对应的编码方案解码。

????python解释器的编码方案的差异:
???????? python 2.x 默认使用ASCII码,因此在编译字符串时,需做如下操作: ????????1.增加文件头
???????? 2.字符串前+‘u’

# coding:utf8
# python 2.X
# s = u'你'
s1 = u'haha'
#print(s)
# '''
# File "D:/py20/day09 ��?/��?����?�汾���??����.py", line 2
# SyntaxError: Non-ASCII character '\xe4'
# '''
print(s1)

??2.3 编码与解码

编码(encode):人类的字符>>>计算机二进制
解码(decode):计算机二进制>>>人类的字符
字符串.encode(编码)

s = '哈哈'
print(s.encode('GBK'))  # b'\xb9\xfe\xb9\xfe'

bytes.decode(解码)

s1 = b'\xb9\xfe\xb9\xfe'
print(s1.decode('GBK')) # 哈哈

3 python文件模式

??3.1文件操作

??取消转义

# 取消转义
# 很多英文字符与斜杠组合到一起会产生特殊含义,解决方式在字符串前加字母r
print('haha\n哈哈')   
'''
haha
哈哈
'''
print(r'haha\n哈哈')  # haha\n哈哈

??with 上下文

  1. open与close使用
    f = open(文件路径,读写模式,编码)
    f.close()
res = open(r'a.txt', 'r', encoding='utf8')
print(res)  # 产生文件句柄,<_io.TextIOWrapper name='a.txt' mode='r' encoding='utf8'>
print(res.read())   # 读取文件
res.close()   # 关闭文件,释放资源
'''
注释
open(文件路径,读写模式,字符编码)
    文件路径与读写模式是必须的
    字符编码是可选的(有些模式需要编码)
'''
  1. with语法会自动帮你关闭文件资源
    with open(文件路径,读写模式,编码 as f:
    ??pass
with open(r'haha.txt', 'r', encoding='utf8') as f:
    print(f.read())

??3.2 读模式(r)

关键字:r
1.文件不存在:报错

with open(r'a.txt','r',encoding='utf8') as f:
    print(f.read()) # No such file or directory: 'a.txt'

2.文件存在,可通过关键字read获取文件信息,但只能读不能写

with open(r'haha.txt', 'r', encoding='utf8') as f:
    print(f.read())  
'''
dadadad
dadada
文件存在,打印文件所有内容
'''

??3.3 写模式(w)

关键字:w
1.文件存在,会先清空文件内容 ,再执行写入操作

with open('haha.txt', 'w', encoding='utf8') as f:
    f.write('haha')
    # print(f.read()) # io.UnsupportedOperation: not readable
'''
原文件内容:
    dadadad
    dadada
现文件内容:
    haha
'''

2.文件不存在,会创建新文件

with open('a.txt','w',encoding='utf8') as f:
    f.write('\n 你好,世界')
'''
文件不存在,创建文件
'''

??3.4 追加模式(a)

1.文件存在,在文件光标尾部追加内容

with open('a.txt', 'a', encoding='utf8') as f:
    f.write('haha')
'''
原文件:
    你好,世界
新文件:
    你好,世界haha
'''

2.文件不存在,创建文件

'''
with open('b.txt','a',encoding='utf8') as f:
    f.write('你好呀,哈哈')
'''
创建新文件,内容为“你好呀,哈哈”

小总结:r,w,a模式只能操作文本文件

??3.5 文本模式(t)

1.文本模式为默认模式:
????r,w,a >>> rt wt at
2.该模式所有操作都是以字符串为基本单位(文本)
3.该模式必须指定encoding参数
4.该模式只能操作文本文件

??3.6 二进制模式(b)

1.该模式可以操作任意类型文件
2.该模式所有操作都是以bytes类型(二进制)为基本单位
3.该模式不需要指定encoding参数
????rb,wb,ab

??3.7扩展:

文件操作方法扩展:
(1)读模式:
a. read()

with open(r'a.txt', 'r', encoding='utf8') as f:
    print(f.read())   # 一次性获取文件所有内容

b. readline()

with open(r'a.txt', 'r', encoding='utf8') as f:
    print(f.readline())  # 1. hahah 每次只读文件一行内容
    print(f.readline())  # 2. 哈哈

c. readlines()

with open(r'a.txt', 'r', encoding='utf8') as f:
    print(f.readlines())  # 1.读取文件的所有内容,并输出成列表,每个元素是文件每行的内容

d. readable()

with open(r'a.txt', 'r', encoding='utf8') as f:
    print(f.readable())  # True 判断当前文件是否可读

(2)写模式
a. write()

with open(r'a.txt', 'w', encoding='utf8') as f:
     f.write('克服一切困难,奥利给!!!')  # 往文本文件写内容
     f.write(123)  # 报错,TypeError: write() argument must be str, not int
b. writelines()
with open(r'a.txt', 'w', encoding='utf8') as f:
    f.writelines(['jason', 'kevin', 'tony'])
 可以将列表中多个字符串元素全部写入,jasonkevintony

c. writable() 判断文件是否有写的能力

with open(r'a.txt', 'w', encoding='utf8') as f:
    print(f.writable())  # True
    print(f.readable())  # False

d. flush()

with open(r'a.txt', 'w', encoding='utf8') as f:
    f.flush() # 直接将内存的文件数据刷到硬盘,相当于ctrl+s
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-01-25 10:56:42  更:2022-01-25 10:58:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:19:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码