python基础之文件处理总结
读文件:
with open('contacts.txt', 'r', encoding='utf-8') as f:
data = f.read()
二进制模式读
使用场景:网络传输(视频、图片或进行网络传输的文本)
with open('contacts.txt', 'rb') as f:
data = f.read()
print(data) # 打印出16进制的编码格式
检测编码的工具
import chardet
with open('contacts.txt', 'rb') as f:
data = f.read()
print(data)
print(chardet.detect(data)) # {'encoding': 'utf-8', 'confidence': 0.99, 'language': ''} confidence是自信程度
print(data.decode('utf-8')) # 文本的内容
循环文件和写模式操作文件
with open('contacts.txt', 'r', encoding='utf-8') as f:
for line in f:
print(line) # 会多出很多空格
'''
因为print()打印时默认加了换行,所以加上,如果出现文件输出有空行的情况直接将print的换行取消即可。
给print()加一个取消自动换行的end=""参数即可:print(line,end=""),跟windows,unix没有关系。就是这么简单。
'''
with open('兼职.txt', 'w', encoding='utf-8') as f: # w是创建,会清空以前的内容,慎用。
f.write('好好学编程')
with open('兼职.txt', 'wb') as f:
f.write('好好学编程'.encode('utf-8'))
追加模式操作文件
with open('contacts.txt', 'a', encoding='utf-8') as f:
f.write('\n小胖 河北 182 100 13222222222')
with open('contacts.txt', 'ab') as f:
f.write('\n小胖 河北 182 100 13222222222'.encode('utf-8')) # 把二进制用utf-8编码
读写混合模式
with open('contacts.txt', 'r+', encoding='utf-8') as f:
data = f.read()
print('content', data)
f.write('\nnewline 1哈哈')
f.write('\nnewline 2哈哈')
f.write('\nnewline 3哈哈')
f.write('\nnewline 4哈哈') # 在后面追加写的内容
print('new content', f.read()) # 不显示新写的内容,因为写完后光标在最后的位置,后面是空的,所以读出来是空的。
写读模式 ---> 先写后读(几乎没有应用场景)
with open('contacts.txt', 'w+', encoding='utf-8') as f:
data = f.read()
print('content', data)
f.write('\nnewline 1哈哈')
f.write('\nnewline 2哈哈')
f.write('\nnewline 3哈哈')
f.write('\nnewline 4哈哈') # 重新创建,把之前的清空掉在写
print('new content', f.read())
其他功能
flush 强制把内容从内存(缓存)刷到硬盘
readable 判断是否可读。在linux上一切皆文件,网卡、硬盘都是文件,这些是不可读的。
with open('f_flush_test.txt', 'w', encoding='utf-8') as f:
f.write('\ntest2')
f.flush()
print(f.readable()) # False
readline 只读一行,遇到\r或\n为止
with open('contacts.txt', 'r', encoding='utf-8') as f:
print(f.readline(), end='') # 王心[路飞学城]9 46 13813234424
print(f.readline(), end='') # 马纤羽 深圳 173 50 13744234523
# ......
seek 按字符编码所占字节来跳寻找,比如utf-8跳转3个字节,那么seek(3)往前跳一个字。
tell 返回当前文件操作光标位置
with open('seek_test.txt', 'r', encoding='utf-8') as f: # 文本内容:# 好好学习编程
print(f.read(1)) # 好 # read按字符读
print(f.tell()) #
print(f.read(2)) # 好学
print(f.tell()) #
# print(f.seek(11))
# print(f.read(1)) # 报错 'utf-8' codec can't decode byte 0xa0 in position 0: invalid start byte
print(f.seek(12))
print(f.read(1)) # 编
seekable 判断是否可以进行seek操作,和readable一样主要用在linux上
truncate 按指定长度截断文件
with open('truncate_test.txt', 'r+', encoding='utf-8') as f: # 文本内容:学习编程 # r+ 可读可写,若文件不存在报错。
# print(f.tell()) # 0
# print(f.truncate()) # 0
# 默认截断到末尾
# f.seek(3)
# f.truncate() # 文本内容只剩下"学"了,把后面的都截断了。
# 可以自己写参数指定从哪开始截断,并不是依据光标位置截断,而是从头开始截多少。
f.seek(3)
f.truncate(9) # 文本内容剩下"学习编"了
文件修改功能 word和vim是把内容全部加载到内存上,当在内存修改完保存后,它们在把所有内容重新写到硬盘上,所以可以实现任意字符的修改。这是用占内存的方式来修改文件 下面是用占硬盘的方式来修改
import os f_name = 'contacts.txt'
f_new_name = "%s.new" % f_name old_str = '马纤羽'
new_str = 'new马纤羽' f = open(f_name, 'r', encoding='utf-8')
f_new = open(f_new_name, 'w', encoding='utf-8') for line in f:
if old_str in line:
line = line.replace(old_str, new_str)
f_new.write(line) with open(f_name, 'r', encoding='utf-8') as f:
for line in f:
if old_str in line:
line = line.replace(old_str, new_str)
with open(f_new_name, 'a', encoding='utf-8') as f_new:
f_new.write(line)
os.rename(f_new_name, f_name) # 把新文件名替换成旧文件名,这样就替换了旧文件 # 完成后contacts.txt文件里之前是马纤羽的都变成了new马纤羽
下面是用占内存的方式来修改
with open('contacts.txt', 'r+', encoding='utf-8') as f:
data = f.read()
data = data.replace('杜姗姗', 'Alex')
f.seek(0)
f.write(data) # 如果是减内容的话(比如以前是1个G,改完后就剩800MB了),可以用truncate截取到800MB那个点。
python基础之文件处理总结的更多相关文章
- python基础之文件读写
python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...
- 第二篇:python基础之文件读写
python基础之文件读写 python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使 ...
- 七. Python基础(7)--文件的读写
七. Python基础(7)--文件的读写 1 ● 文件读取的知识补充 f = open('file', encoding = 'utf-8') content1 = f.read() content ...
- python基础篇(文件操作)
Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...
- Python基础_文件的的处理及异常处理
今天主要讲讲文件读写及异常处理. 一.文件操作 1.1 文件的创建及读 打开文件 open 函数 open(file,[option]) file 是要打开的文件 option是可选择的参数文件的打 ...
- 【穿插】Python基础之文件、文件夹的创建,对上一期代码进行优化
在上一期妹子图的爬虫教程中,我们将图片都保存在了代码当前目录下,这样并不便于浏览,我们应该将同一个模特的图片都放在一个文件夹中. 今天我们就简单讲一下Python下如何创建文件.文件夹,今后就可以用上 ...
- python基础之文件处理
读和写文件 读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直 ...
- Python基础、文件处理
一.概述 Python中操作文件是通过file对象来处理的,步骤: 指定文件的路径.操作的模式 对文件进行操作,读或写操作 关闭文件对象 f = open( '文件路径','访问模式') # 打开文件 ...
- python基础4文件操作
在磁盘上读取文件的 功能都是由操作系统来实现的,不允许普通的程序直接操作磁盘,所以读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据( ...
- Python基础之文件处理、函数、内置函数 (三)
内置函数 一 详细见python文档,请点击 文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 文件句柄 = file('文件路径', '模式') 注:python中打开 ...
随机推荐
- Qconf安装文档
1.操作系统配置(以root用户执行) 1)安装编译工具 cmake(已经安装过可以跳过) yum install -y cmake 2.安装Qconf 1)下载安装源码 wget http://10 ...
- 课程增加功能(java web)
1.设计思想 先写类DBUtil用来连接数据库.在UserDaoImpl2类中写在数据库中添加课程表信息的方法.然后定义类Calss2来写保存超级课表数据:课程名称,任课教师,上课地点的属性及其get ...
- 剖析js中的数据类型
首先说一下八种常见的数据类型:五种简单的数据类型和三种复杂数据类型. 简单数据类型 Number:数字类型 String:字符串 Boolean:布尔类型 Undefined:未定义 Null:空 复 ...
- .net程序员业余Android开发赚点外快(介绍一下自己的经验)
记得是11年10月份开始研究android的,当时还不会java,听说android比较火,自己也买了个垃圾android机,平时工作也不是特别忙,于是我就突发奇想,想试试做一下android应用可不 ...
- Appium基础一:Appium概念
1.Appium介绍: Appium是一款开源跨平台(IOS和Android平台)支持多种开发语言(java.python等)进行测试Native/Web/Hybrid的Android/iOS App ...
- 使用PowerShell 获取azure image publisher offer sku 信息
使用azure powershell 获取指定区域的可用镜像 publisher offer sku信息 param ( [parameter(Mandatory = $false)] $Locati ...
- 初识RatingBar
RatingBar,SeekBar和ProgressBar的子类 <RatingBar android:id="@+id/ratingBar2" android:layout ...
- ABAP Development Tools的语法高亮实现原理
ABAP Development Tools的前端是Java,根本识别不了ABAP.那么在ADT里的ABAP语法高亮是如何实现的? 第一次打开一个report时,显示在ADT里的代码是没有任何语法高亮 ...
- [神经网络]一步一步使用Mobile-Net完成视觉识别(一)
1.环境配置 2.数据集获取 3.训练集获取 4.训练 5.调用测试训练结果 6.代码讲解 本文是第一篇,环境配置篇. 先打开tensorflow object detection api 看看需要什 ...
- 谷歌浏览器 加安全地址 快捷方式加参数 chrome
--unsafely-treat-insecure-origin-as-secure="http://192.168.43.17:8080"