python 操作文件的常用方式有如下

读文件:r 模式
实例演示1:
f1 = open(file='D:\Python3.5-learn\模块2\character3_文件操作\staff_table.txt',mode='r',encoding='utf-8') # 以 r 的 模式,打开指定路径的文件 ,按照utf-8 的方式去读取

data = f.read() # 读取文件,表示读取所有内容

f.close() # 关闭文件

实例演示2:
f2 = open(file='D:\Python3.5-learn\模块2\character3_文件操作\staff_table.txt',mode='rb',encoding='utf-8') # 以 rb 二进制 的 模式,打开指定路径的文件 ,按照utf-8 的方式去读取

data = f.read() # 读取文件,表示读取所有内容

f2.close() # 关闭文件

示例2和示例1的区别在哪?

答:在于示例2打开文件时并未指定encoding,这是为何?是因为直接以rb模式打开了文件 ,rb是指二进制模式,数据读到内存里直接是bytes格式,如果想内容,还需要手动decode,因此在文件打开阶段,不需要指定编码

循环遍历文件:

f = open(file='D:\Python3.5-learn\模块2\character3_文件操作\staff_table.txt',mode='r',encoding='utf-8') #

for line in f:

 print(line)

f.close()

写文件:w 模式
实例演示1:
f1 = open(file='D:\Python3.5-learn\模块2\character3_文件操作\staff_table.txt',mode='w',encoding='utf-8') # 以 w 的 模式,打开指定路径的文件 ,按照utf-8 的方式去写

data = f.write(“.....”) # 写入指定的文件

f.close() # 关闭文件

实例演示2:
f2 = open(file='D:\Python3.5-learn\模块2\character3_文件操作\staff_table.txt',mode='rb',encoding='utf-8') # 以 wb 二进制 的 模式,打开指定路径的文件 ,按照utf-8 的方式去读取

data = f.write(“.....”) # 写入指定的文件

f2.close() # 关闭文件

提示:文件以w 或者 wb 的方式去操作的时候,会清空原有的文件,

wb,写入时需要直接传入以某种编码的0100101,即:字节类型
w 和 encoding,写入时需要传入unicode字符串,内部会根据encoding制定的编码将unicode字符串转换为该编码的 010101010

追加文件:a模式
f1 = open(file='D:\Python3.5-learn\模块2\character3_文件操作\staff_table.txt',mode='a',encoding='utf-8') # 以 w 的 模式,打开指定路径的文件 ,按照utf-8 的方式去写

data = f.write(“\n11,Kevin Chen,22,13151054603,Sales,2013-04-01”) # 写入指定的文件

f1.close() # 关闭文件

文件操作时,以 “a”或“ab” 模式打开,则只能追加,即:在原来内容的尾部追加内容

写入到硬盘上时,必须是某种编码的0101010,打开时需要注意:

ab,写入时需要直接传入以某种编码的0100101,即:字节类型
a 和 encoding,写入时需要传入unicode字符串,内部会根据encoding制定的编码将unicode字符串转换为该编码的 010101010

读写模式:r+
f1 = open("beiying2.txt", "r+",encoding="utf-8") # 以读写的方式打开文件
data = f1.read() # 读取文件
print(data)
f1.write("\n first line") # 在文件的末尾追加文件
f1.close() # 关闭文件

写读模式:w+
f1 = open("beiying.txt", "w+", encoding="utf-8")
data = f1.read()
print(data)
f1.write("line 1")
f1.write("\nline 2")
f1.write("\nline 3")
f1.write("\nline 4")
f1.close()

w+会先把文件清空,再写新内容,相比w模式,只是支持了一个读功能,且还只能读已经写入的新内容

文件操作的其他方式:
def flush(self, *args, **kwargs): # real signature unknown
把文件从内存buffer里强制刷新到硬盘

def seek(self, *args, *kwargs): # real signature unknown
把操作文件的光标移到指定位置
注意seek的长度是按字节算的, 字符编码存每个字符所占的字节长度不一样。
如“路飞学城” 用gbk存是2个字节一个字,用utf-8就是3个字节,因此以gbk打开时,seek(4) 就把光标切换到了“飞”和“学”两个字中间。
但如果是utf8,seek(4)会导致,拿到了飞这个字的一部分字节,打印的话会报错,因为处理剩下的文本时发现用utf8处理不了了,因为编码对不上了。少了一个字节

def tell(self, *args, **kwargs): # real signature unknown
返回当前文件操作光标位置

def truncate(self, *args, *kwargs): # real signature unknown
按指定长度截断文件
指定长度的话,就从文件开头开始截断指定长度,不指定长度的话,就从当前位置到文件尾部的内容全去掉。

转载于:https://blog.51cto.com/sdsca/2108322

python 基础 day3相关推荐

  1. Python基础 day3

    1.为何要有字典? 一个key对应一个value,我只要知道key就能取出value. 2.字典的形式 dic = {'name':'dajiba','age':18} key的定义规则: 不可变 v ...

  2. Python基础day03【字符串(定义、输入输出、常用方法)、列表(定义、基本使用、增删改查、嵌套)、元组】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day3 作业解析[5道 字符串题.3道 列表题.2道 元组题]      学习目 ...

  3. 第三章:Python基础の函数和文件操作实战

    本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...

  4. python基础(一)完结

    Day 01 python基础 一.计算机基础 1.快捷键: 快速复制:Ctrl+D 垂直拆分 水平 拆分 快速修改 查看 2.计算机的组成 硬件:运算器 控制器 存储器 输入设备 输出设备 软件: ...

  5. f是一个python内部变量类型,Python基础变量类型——List浅析

    Python使用list 一.list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示 ...

  6. python 等号报错_Python学习----Python基础

    Python基础 一.数据类型和变量 1.在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量. 例如: a =520# a是整数prin ...

  7. python基础——继承与派生、组合

    python基础--继承与派生 1 什么是继承: 继承是一种创建新的类的方式,在python中,新建的类可以继承自一个或者多个父类,原始类成为基类或超累,新建的类成为派生类或子类 1.1 继承分为:单 ...

  8. Python学习笔记1 Python基础

    第1章 Python基础 1.1 Python概述及版本介绍 1.Python是一种面向对象的解释型计算机程序设计语言(解释型语言源代码->解释器逐行解释每一句源代码) 2.优点:高级语言.可移 ...

  9. python基础---元组、字典、函数、文件、异常

    文章目录 python基础---元组.字典.函数.文件.异常 Tuple(元组) 常用操作 dict(字典) 函数 文件 异常 python基础-元组.字典.函数.文件.异常 Tuple(元组) tu ...

最新文章

  1. Java 如何将String转化为Int
  2. 数据库误操作后悔药来了:AnalyticDB PostgreSQL教你实现分布式一致性备份恢复
  3. Linux内核地址空间为什么1GB,为什么Windows为其系统地址空间预留1Gb(或2 Gb)?
  4. 王道计算机网络 网络层整理 超详细版
  5. 无聊 乱写写 CSDN博客挺好玩的 确实
  6. 有了这个数据强一致“利器”,DBA们轻松修复数据对加班“say no”
  7. 开源框架 Apache Struts 2漏洞的 PoC 已公开
  8. 泄漏计算机网络安全法情节,第十一章网络安全法第十二章电子商务纠纷的法律解决详细分解.doc...
  9. 树莓派boot分区cmdline.txt
  10. 苹果Mac白噪音软件:Noise Machine
  11. MTT预实验与免疫染色准备
  12. jdk和cglib动态代理
  13. SPSS中的数据分析—描述性统计分析【3】
  14. 项目整体流程及项目经理工作职责
  15. Win10播放视频卡顿怎么解决
  16. 中国大学mooc南京航空航天大学民航运输概论章节作业及测试
  17. 编程求x的n次方_用C语言程序设计:求x的n次方的函数。
  18. 【烈日炎炎战后端】MySQL编程(3.6万字)
  19. git 上传出现“ ! [rejected] master -> master (non-fast-forward)”
  20. 计算机科学家书法,把书法和菜名结合,AI 模型创作独特的中国书法艺术

热门文章

  1. 想去苹果做AI?看看你够不够格
  2. Nginx为什么快到根本停不下来?
  3. 内涵! 程序员才懂的动图... | 节日出行注意安全~~
  4. 聊一聊如何优雅地向程序员提问题
  5. 《深入理解Spring Cloud与微服务构建》出版啦!
  6. SVM算法在项目实践中的应用!
  7. 官宣!英雄联盟、王者荣耀、街霸……这些电子竞技入选杭州亚运会
  8. 心中的象牙塔:怎样才能拿到理想的教职offer?
  9. 相机居然能存储气味,未来智能家居会是什么样? | CCF C³
  10. 决策树算法的原理(接地气版)