@字符编码
见:https://zhuanlan.zhihu.com/p/108805502
一.文件基本操作
'''
1、什么是文件
    文件是操作系统提供给用户或者应用程序的一种操作硬盘的机制/功能
 
2、为何要用文件
    应用程序-----------》遥控器
    操作系统-----------》文件
    计算机硬件----------》硬盘
 
3、如何用文件
    文件操作的基本流程:
        1、应用程序打开文件,拿到一个文件对象/文件句柄
        2、调用文件句柄下的读、写操作
        3、关闭文件,回收操作系统资源
 
 '''
 
一. 文件操作的基本流程
# f = open('D:/python17期/day08/代码/aaa/a.txt',mode='rt',encoding="utf-8")  # windows默认:gbk
# # print(f)
# res = f.read()
# print(res)
#
# f.close()
# # print(f)
# # f.read()
#
# del f
 
二. 上下文管理(with)
# with open('aaa/a.txt',mode='rt',encoding="utf-8") as f,\
#         open(...) as f1,\
#         open(...) as f2:
#     f.read()
#     f1.read()
#     f2.read()
 
# with open('aaa/a.txt',mode='rt',encoding="utf-8") as f:
#     print(f.read())
 
三.文件的mode:
(1).控制文件读写操作的模式
#     r(默认的)
#     w
#     a
(2).控制文件读写内容的模式
#     t(默认的):无论读写都是以字符串为单位的,必须要指定encoding参数--->只能用于文件文件的处理
#     b:无论读写都是以二进制位(bytes类型)单位的,一定不能指定encoding参数---》可以用于所有文件的处理
 
1、r:只读模式,文件不存在则报错,文件存在文件指针则跳到文件开头
# with open('aaa/a.txt',mode='rt',encoding="utf-8") as f:
#     print(f.read())
 
2、w:只写模式,文件不存在则创建空文档文件指针处于文件开头,文件存在则清空文件指针处于文件开头
# with open('aaa/a.txt',mode='wt',encoding="utf-8") as f:
#     # f.write("你好\n")
#     # f.write("哈哈哈\n")
#     # f.write("我真帅\n")
#     f.write("。。。。")
 
 
3、a:只追加写模式,文件不存在则创建空文档文件指针处于文件末尾,文件存在则指针处于文件末尾
# with open('aaa/a.txt',mode='at',encoding="utf-8") as f:
#     f.write("你好1\n")
#     f.write("你好2\n")
#     f.write("你好3\n")
 四.了解

# r+ w+ a+ :可读可写
#在平时工作中,我们只单纯使用r/w/a,要么只读,要么只写,一般不用可读可写的模式
二.文件处理高级操作
(一).文件处理的方法
1.读操作
f.read()  # 读取所有内容,执行完该操作后,文件指针会移动到文件末尾
f.readline() # 读取一行内容,光标移动到第二行首部
f.readlines() # 读取每一行内容,存放于列表中
注:# f.read()与f.readlines()都是将内容一次性读入内容,如果内容过大会导致内存溢出

2.
写操作
f.write('1111\n222\n')  # 针对文本模式的写,需要自己写换行符
f.write('1111\n222\n'.encode('utf-8')) # 针对b模式的写,需要自己写换行符
f.writelines(['333\n','444\n']) # 文件模式
f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')]) #b模式

 3.其它

f.readable()  # 文件是否可读
f.writable() # 文件是否可读
f.closed # 文件是否关闭
f.encoding # 如果文件打开模式为b,则没有该属性
f.flush() # 立刻将文件内容从内存刷到硬盘
(二).控制文件指针移动
# 控制文件内指针移动的单位: 只有t模式下的read(n)代表的是字符个数,除此之外全都是字节个数
#之前文件内指针的移动都是由读/写操作而被动触发的,若想读取文件某一特定位置的数据,则则需要用f.seek方法主动控制文件内指针的移动,详细用法如下:
# f.seek(指针移动的字节数,模式控制):
模式控制:
# 0: 默认的模式,该模式代表指针移动的字节数是以文件开头为参照的
# 1: 该模式代表指针移动的字节数是以当前所在的位置为参照的
# 2: 该模式代表指针移动的字节数是以文件末尾的位置为参照的
# 强调:其中0模式可以在t或者b模式使用,而1跟2模式只能在b模式下用
(三).文件修改的两种方式
一,
1.将文件内容一次性全部读入内存
2.在内存中将内容修改
3.将修改后的内容写回源文件
'''
# with open('log.txt',mode='rt',encoding='utf-8') as f:
# data = f.read()
# res = data.replace('日志','log')
#
# with open('log.txt',mode='wt',encoding='utf-8') as f:
# f.write(res)

'''
二.
1.以读的方式打开源文件,在以写的方式打开一个临时文件
2.从源文件中读出一行内容存入内存中,修改完之后再存入临时文件
3.删除源文件,将临时文件改名为源文件名
'''
# import os
# with open('log.txt',mode='rt',encoding='utf-8') as str_f,\
# open('.log.txt.swp',mode='wt',encoding='utf-8') as dst_f:
# for line in str_f:
# dst_f.write(line.replace('log','日志'))
#
# os.remove('log.txt')
# os.rename('.log.txt.swp','log.txt')
 
 
 

day7.文件处理的更多相关文章

  1. python全栈开发-Day7 文件处理

    python全栈开发-Day7   文件处理 一 .文件操作 一 .介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必 ...

  2. 总结day7 ---- 文件操作,读,写,追加,以及相关方法

    内容大纲 一:文件的基本操作, >常见问题 >encoding >绝对路径和相对路径的 二:文件的读写追加相关操作 >读(r, r+ ,rb,r+b) >写(w,w+,w ...

  3. python基础知识-day7(文件操作)

    1.文件IO操作: 1)操作文件使用的函数是open() 2)操作文件的模式: a.r:读取文件 b.w:往文件里边写内容(先删除文件里边已有的内容) c.a:是追加(在文件基础上写入新的内容) d. ...

  4. Django基础,Day7 - 添加静态文件 static files

    添加css样式文件 1.首先在app目录下创建static文件夹,如polls/static.django会自动找到放在这里的静态文件. AppDirectoriesFinder which look ...

  5. Python编程Day7——字符编码、字符与字节、文件操作

    一.字符编码 重点 ***** 1. 什么是字符编码:将人识别的字符转换计算机能识别的01,转换的规则就是字符编码表2. 常用的编码表:ascii.unicode.GBK.Shift_JIS.Euc- ...

  6. Linux:Day7(下) 磁盘管理、文件系统管理

    Linux入门 Linux系统管理: 磁盘管理.文件系统管理 RAID基本原理.LVM2 网络管理:TCP/IP协议.Linux网络属性配置 程序包管理:rpm,yum 进程管理:htop,glanc ...

  7. Linux:Day7(上) find、文件特殊权限、if语句

    文件查找: 在文件系统上查找符合条件的文件: 文件查找工具:locate,find locate:非实时查找(数据库查找) find:实时查找: locate: 依赖于事先 构建的索引:索引的构建是在 ...

  8. DAY7 字符编码和文件操作

    一.软件与python解释器打开文件的方法 1.软件打开文件读取数据的流程: 1. 打开软件 2. 往计算机发生一个打开文件的指令,来打开文件 3. 读取数据渲染给用户(存取编码不一致:乱码) 2.p ...

  9. day7 七、字符编码,字符字节与文件操作

    一.字符编码 1.定义:人类能识别的是字符等高级标识符,电脑只能识别0,1组成的标识符,要完成人与机器之间的信息交流,一定需要一个媒介,进行两种标识符的转化(两种标识符的对应关系) 对应关系形成的结构 ...

随机推荐

  1. nginx判断状态脚本

    A是nginx行数 为0则启动nginx 启动失败则杀死keepalived进程

  2. html5的标签中,哪些是行内元素,哪些是块级元素。

    块级元素:块级大多为结构性标记 <address>...</adderss> <center>...</center>  地址文字 <h1> ...

  3. TERSUS无代码开发(笔记06)-简单实例手机端页面设计

    手机端的设计 1.页面说明 2.默认页面===>提交请假单(上面页面双击进入,页面主要编辑区) 2.1默认页面===>提交请假单===>头部区(页面部份主要编辑区01) 2.1.1默 ...

  4. 微信小程序和H5之间相互跳转

    1.微信小程序跳转小程序 wx.navigateToMiniProgram <script src='https://res.wx.qq.com/open/js/jweixin-1.3.0.js ...

  5. GNS3通过“云”连接到虚拟机实验

    GNS3通过"云"连接到虚拟机实验并使用wireshark工具对数据分析 观看本文之前注意!!!!! 做这次实验,我所遇到的问题,会全部写在文章结尾,如果读者们遇到问题,可查看. ...

  6. C#的常见集合接口提供的功能

    C#的常见集合接口提供的功能 这里的功能都是泛型版本的常见功能,列出来,也许后面用得上吧,没有放非泛型版本,因为觉得用得不多,也就没有整理 IEnumerable<T> ICollecti ...

  7. Codeforces1493D GCD of an Array

    题目链接 点我跳转 题目大意 给定一个长度为 \(N\) 的序列 \(A\) 有 \(Q\) 次操作,每次操作给定两个数 \(i\) , \(X\),使得 \(A[i] = A[i] \times X ...

  8. .NET 5学习笔记(11)—— Host Blazor WebAssembly in a Windows Service

    实在是被某软忽悠瘸了,愤而写此一篇.希望能让同样需求的同学们少走弯路.某软在<在 Windows 服务中托管 ASP.NET Core>中,介绍了通过创建Worker Service工程, ...

  9. C# 应用 - 多线程 1) 多线程的知识图谱

  10. [BJOI2020] 封印

    一.题目 点此看题 二.解法 今天不知道为什么手感这么好,写一发完全没调就过掉了. 我感觉这种多组询问的字符串题是很难的,经常没有什么思路.我先考虑了一下能不能像 区间本质不同的子串个数 这样直接离线 ...