一、3 种模式

r: 只读模式,        r+: 读写模式,覆盖开头内容

w: 写模式,全覆盖 (如果是没有的文件则重新创建空文件)

a+:  读写模式,从最开头写,覆盖开头内容 (如果是没有的文件则重新创建空文件)

f=open('陈粒1','r',encoding='utf8')
#data=f.read()        光标跑到文件最末尾,之后执行readline,读到的为空
#print(data)
print(f.readable())
print('第1行',f.readline(),end='')     # 每行读取的文件末尾有一个'\n'
print('第2行',f.readline(),end='')
print('第3行',f.readline())

二、文件处理模式b模式

因为r, w, a模式默认都是读写的 txt 模式的文件,但是有的文件,比如视频文件,就需要2进制模式读写,因此要用rb, wb, ab模式。

f1=open('test11.py','rb') #b的方式不能指定编码
data=f1.read()
print(data)     # b'11111\r\n22222\r\n33333\r\n44444\r\n55555'      windows中的回车为'\r\n'
f1.close()
# #bytes---------decode---------》'字符串'

f2=open('test22.py','wb') #b的方式不能指定编码
f2.write(bytes('1111\n',encoding='utf-8'))     #(编码)'字符串'---------encode---------》bytes# 将字符串'1111\n',通过utf-8编码,转换成二进制形式
f2.write('杨件'.encode('utf-8'))
f2.close()f3=open('test22.py','ab') #b的方式不能指定编码
f3.write('asdf'.encode('utf-8'))
f3.close()
# test22的最后内容为: #1111#杨件asdf

三、文件处理方式

# test11.py 的内容是: 11111#22222#333
f = open('test11.py','r+',encoding='utf-8')     # tell(),读取当前光标位置,以字节为单位
print(f.tell())     # 0
f.readline()
print(f.tell())     # 6
f.readline()
print(f.tell())     # 12

# test11.py 的内容是: 1111111111#2222222222#333
f = open('test11.py','r+',encoding='utf-8')     # tell(),读取当前光标位置,以字节为单位
print(f.tell())     # 0                              seek(n),光标放到第 n 个字节的位置
f.readline()
print(f.tell())     # 11
f.seek(2)
print(f.tell())     # 2
f.write('你好')
f.seek(8)
print(f.tell())     # 8
f.write('你好')
# 最后test11.py 的内容是: 11你好你好2222222#333
# 因为“你好你好”占了12个字符,所以用去了第一行的回车,和第二行的 3 个‘2’。

# test11.py 的内容是: 1111111111
#                      2222222222
#                      333
f = open('test11.py','r+',encoding='utf-8')     # read(n), 读取n个字符
data = f.read(13)
print(data)          # 1111111111
#                      22           回车代表一个字符

# test11.py 的内容是: 你好
#                      2222222222
#                      333
f = open('test11.py','r+',encoding='utf-8')     # truncate(n), 截取n个字节
f.truncate(9)
# 最后test11.py 的内容是: 你好
#                          22      

seek 的另一种用法:

从上次光标的位置往后推移 n 个字节f=open('test11.py','rb')     # 需要以 b 的方式 seek
print(f.tell())      # 0
f.seek(10,1)
print(f.tell())      # 10
f.seek(3,1)
print(f.tell())      # 13

读取文件的最后一行:f = open('test11.py','rb')
for i in f:offs=-10while True:f.seek(offs,2)     # 从文件的末尾往上找10个字节data=f.readlines()if len(data) > 1:print('文件的最后一行是     %s' %(data[-1].decode('utf-8')))breakoffs*=2
f.close()

四、for循环

for 循环是将 列表、元组、集合、字典、字符串、文件 变为可迭代对象,然后一个一个遍历读出,可以节省内存

x='hello'
iter_test=x.__iter__()         # 将 x 转换为可迭代对象,“字符串”,“列表”, “元组”,“字典”,“集合”都能转换print(iter_test)
print(iter_test.__next__())    # h
print(iter_test.__next__())    # e
print(iter_test.__next__())    # l
print(iter_test.__next__())    # l
print(iter_test.__next__())    # o
print(iter_test.__next__())    # 报错

y = ('s','d','f')
y1 = y.__iter__()
print(y1.__next__())     # s  有序
print(y1.__next__())     # d
print(y1.__next__())     # f

u = {'a','b'}
u1 = u.__iter__()
print(u1.__next__())     # b  无序
print(u1.__next__())     # a

v = {'A':12,'B':34}
v1 = v.__iter__()
print(v1.__next__())     # B  无序
print(v1.__next__())     # A

while 循环也可实现:

l = ['a','s','d']
index=0
while index < len(l):print(l[index])index+=1

for 循环实际是这样运行的:

l=['die','erzi','sunzi','chongsunzi']
diedai_l = l.__iter__()while True:try:print(diedai_l.__next__())except StopIteration:
#        print('迭代完毕了,循环终止了')break

转载于:https://www.cnblogs.com/zhangguoxv/p/9789972.html

day18__文件操作相关推荐

  1. C++核心编程(四)--文件操作

    5 文件操作 程序运行时产生的数据都属于临时数据,程序一点运行结束,就会被释放 通过文件可以将数据持久化 C++中对文件操作需要包含头文件:fstream 文件类型分为两种: 文本文件:文件以文本的A ...

  2. python codecs.open()及文件操作-文本处理 with open

    20210810 以二进制并追加的形式写入文件 20210731 f.write('\n') 换行写入 20210625 https://blog.csdn.net/a543402496/articl ...

  3. day07-字符编码、文件操作

    目录: 字符编码 文件处理 一.字符编码: #1. 什么是字符编码:将人识别的字符转换计算机能识别的01,转换的规则就是字符编码表 #2. 常用的编码表:ascii.unicode.GBK.Shift ...

  4. HTML5 本地文件操作之FileSystemAPI整理(二)

    一.文件目录操作 1.DirectoryEntry对象 属性: 1.isFile: 操作对象的是否为文件,DirectoryEntry对象固定其值为false 2.isDirectory: 操作对象是 ...

  5. python3 转码的函数_python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: 1 #/usr/bin/e ...

  6. linux文件编辑操作,Linux下文本编辑及其文件操作

    文本编辑及其文件操作 Vim 命令模式: dd 删除当前行 yy 2yy nyy 复制 从光标算起,复制n行 p 粘贴 默认粘贴在光标的下一行 u 撤销 末行模式: :wq 保存退出 :wq! 强制保 ...

  7. c++:文件操作1 文件的打开

    在程序中,要使用一个文件,先要打开文件后才能读写,读写完后要关闭.创建一个新文件也要先执行打开(open)操作,然后才能往文件中写入数据.C++ 文件流类有相应的成员函数来实现打开.读.写.关闭等文件 ...

  8. python写byte数组到文件_这可能是写过最详细的Python文件操作。网友:收藏备用(中篇)...

    很多同学对于编码问题都不是很清楚,计算机常见的编码格式为: ASCII ISO-8859-1 GB2312 GBK UTF-8 UTF-16 对于Python开发中,我们一般都是采用统一的编码格式:U ...

  9. 浅谈无缓存I/O操作和标准I/O文件操作区别 (转载)

    首先,先稍微了解系统调用的概念: 系统调用,英文名system call,每个操作系统都在内核里有一些内建的函数库,这些函数可以用来完成一些系统系统调用把应用程序的请求传给内核,调用相应的的内核函数完 ...

最新文章

  1. 百分点宣布完成C轮融资2500万美元 将进一步开放云平台应用
  2. 牛逼的python代码_牛逼了!Python代码补全利器,提高效率告别996!
  3. Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'beans'.
  4. 栈空间和堆空间的区别
  5. python的cubes怎么使用_如何使用python中的opengl?
  6. Linux内核分析之搭建Mykernel
  7. HTML中的table和div
  8. Gamma 分布与 Beta 分布及共轭的含义
  9. linux ipc 信号量,linux ipc信号量
  10. 使用 CRF 做中文分词
  11. 白杨SEO:聊聊微信红包封面、微信8.0状态背景图片和视频素材背后的商机
  12. Vscode运行Demo程序出现错误
  13. 各大主要城市五险一金及税后工资计算器
  14. 如何把flash.exe转换成家用DVD可以播放的MPG格式
  15. 百度网盘加速下载教程
  16. C# Winform调用百度接口实现身份证文字识别教程完整版!!!(源码)
  17. development 和 production 模式的区别
  18. AA和AAA台灯区别大吗?护眼台灯选哪个品牌比较好
  19. 腾讯游戏登录和接入米大师游戏币托管模式支付(入坑指南,微信支付)
  20. 各种版本号的意义汇总

热门文章

  1. 计算机编程结束进程代码,M代码如何停止CNC编程的程序
  2. 每天两小时,吃透法国TOP双硕专家匠心打造的这套目标检测、卷积神经网络和OpenCV学习笔记(保姆级/20G高清/PPT/代码)...
  3. 嵌入式中常见的存储器总结(一)存储器分类
  4. ArcGIS如何利用已有坐标转成点(arcgis生成、python生成)
  5. java service wrapper jar 服务_javaservice wrapper 实现注册服务功能
  6. find python列表_Python基础知识(7)list列表各种操作
  7. python从云端服务器读数据_audio 读取服务器文件
  8. 用html5点击消失,input点击后placeholder中的提示消息消失
  9. SPP-net论文笔记
  10. llvm安装方式_安装 LLVM 和 Clang