读文件:
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基础之文件处理总结的更多相关文章

  1. python基础之文件读写

    python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...

  2. 第二篇:python基础之文件读写

    python基础之文件读写   python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使 ...

  3. 七. Python基础(7)--文件的读写

    七. Python基础(7)--文件的读写 1 ● 文件读取的知识补充 f = open('file', encoding = 'utf-8') content1 = f.read() content ...

  4. python基础篇(文件操作)

    Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...

  5. Python基础_文件的的处理及异常处理

    今天主要讲讲文件读写及异常处理. 一.文件操作 1.1 文件的创建及读 打开文件 open 函数  open(file,[option]) file 是要打开的文件 option是可选择的参数文件的打 ...

  6. 【穿插】Python基础之文件、文件夹的创建,对上一期代码进行优化

    在上一期妹子图的爬虫教程中,我们将图片都保存在了代码当前目录下,这样并不便于浏览,我们应该将同一个模特的图片都放在一个文件夹中. 今天我们就简单讲一下Python下如何创建文件.文件夹,今后就可以用上 ...

  7. python基础之文件处理

    读和写文件 读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直 ...

  8. Python基础、文件处理

    一.概述 Python中操作文件是通过file对象来处理的,步骤: 指定文件的路径.操作的模式 对文件进行操作,读或写操作 关闭文件对象 f = open( '文件路径','访问模式') # 打开文件 ...

  9. python基础4文件操作

    在磁盘上读取文件的 功能都是由操作系统来实现的,不允许普通的程序直接操作磁盘,所以读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据( ...

  10. Python基础之文件处理、函数、内置函数 (三)

    内置函数 一 详细见python文档,请点击 文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开文件 文件句柄 = file('文件路径', '模式') 注:python中打开 ...

随机推荐

  1. 《springcloud 二》SrpingCloud Zuul 微服务网关搭建

    网关作用 网关的作用,可以实现负载均衡.路由转发.日志.权限控制.监控等. 网关与过滤器区别 网关是拦截所有服务器请求进行控制 过滤器拦截某单个服务器请求进行控制 Nginx与Zuul的区别 Ngin ...

  2. springboot启动提示缺少数据源

    If you want an embedded database please put a supported one on the classpath. If you have database s ...

  3. AngularJS(一):概述

    本文也同步发表在我的公众号“我的天空” 在我们之前学习的前端代码编写过程中,总是通过HTML与CSS来进行页面布局,而使用JS来控制页面逻辑,因此,我们习惯于在JS中来操作页面元素,如以下代码,我们希 ...

  4. Microsoft Exchange本地和Exchange Online可以与第三方服务共享

    很多人都知道Office 365中的Microsoft Exchange本地和Exchange Online可以与第三方服务共享您的个人数据?例如,在Exchange电子邮件中找到的任何地图地址都会发 ...

  5. document.all.item作用

    1.document.all.myCheckBox和 document.all.item通过控件的名字定位控件,item()中是控件的名字例如:<input type="checkbo ...

  6. (转载)Newtonsoft.Json使用总结

    Newtonsoft.Json使用总结 初识JSON.......................................................................... ...

  7. 打开某exe提示"应用程序无法启动,因为应用程序的并行配置不正确……"的解决方案

    本人在新安装好了的windows server 2008 r2 (64位)上运行“RefilesName V2.0(文件批量改名).exe”,结果提示: 应用程序无法启动,因为应用程序的并行配置不正确 ...

  8. [dp][uestc oj]J - 男神的约会

    J - 男神的约会 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit ...

  9. self & this 上下文

    对象:指向对象的首地址: 函数:代表了函数运行的主要上下文: 内部:在类的内部使用. self Within the body of a class method, self refers to th ...

  10. [tensorflow] tf2.0 简单例子

    tf2.0笔记 感觉,都统一了,pytorch tensorflow mxnet,大家都差不多了 gan例子笔记 import tensorflow as tf from tensorflow.ker ...