文件处理流程

1.打开文件,得到文件句柄并赋值给一个变量

2.通过句柄对文件进行操作

3.关闭文件

f=open('test.txt',encoding='gbk')
data = f.read()
print(data)
f.close()

读取文件:

#r代表只读 w代表只写 a代表只追加
#默认打开文件是只读模式
f=open('test.txt','r',encoding='gbk')
data = f.read()
print(data)
f.close()
print(f.readable())#返回bool文件是否可读
print('第一行',f.readline(),end='')#读每一行
print('第二行',f.readline())
print('第三行',f.readline())
print(f.readlines())

写文件:

文件内容只能是字符串模式

f=open('zzz','w',encoding='utf-8')
f.write('111111111111\n')
f.write('2222222222222222\n')
f.writelines(['333\n','444\n'])
f.close()

追加:

f=open('zzz','a',encoding='utf-8')
f.write('写到文件最后') f.close()

写文件都是从光标处开始写,若不读文件,则光标在第一行顶头
数据本质上都是覆盖,没有改写

#修改文件第一行
f=open('a.txt','r')
data=f.readlines()
print(data)
f.close() d=open('a.txt','w')
d.write(data[0])
d.close()

with关键字:

with open('a.txt','w') as a:
a.write('1111\n2222')

相当于打开文件对文件进行操作后关闭文件

with open('a.txt','r') as a,\
open('xxx','w') as b:
data=a.read()
b.write(data)

以字节方式操作文件

Windows平台中,\r\n为回车

Linux平台中,\n为回车

#'字符串'---------encode编码--------->>>bytes
#bytes---------decode解码--------->>>'字符串'

二进制方式读:

# f=open('a.txt','rb',encoding='utf-8')#b的方式不能执行编码
f=open('a.txt','rb')
data=f.read()
print(data)
#'字符串'---------encode--------->>>bytes
#bytes---------decode--------->>>'字符串'
print(data.decode())
f.close()

二进制方式写:

f=open('zzz','wb')
#f.write('1111\n')#报错
x='1111\n'
y=bytes(x,encoding='utf-8')
f.write(y)
z=x.encode('utf-8')
f.write(z)
f.close()

open()默认参数:

 Character Meaning
--------- ---------------------------------------------------------------
'r' open for reading (default)
'w' open for writing, truncating the file first
'x' create a new file and open it for writing
'a' open for writing, appending to the end of the file if it exists
'b' binary mode
't' text mode (default)
'+' open a disk file for updating (reading and writing)
'U' universal newline mode (deprecated)

 文件操作的其他方法:

f.closed返回bool值表示文件是否关闭

f.encoding查看使用open打开文件时的编码

f.flush()刷新,将内存中数据保存到硬盘

注意:read(3)代表读取3个字符,其余的文件内光标移动都是以字节为单位如:seek,tell,truncate

f.tell()返回光标当前位置

f=open('a.txt','r',encoding='utf-8',newline='')#newline=''读取文件中真正的换行符号

f.seek()控制光标的移动,seek(a,b)第一个参数表示相对上一次移动的字节,第二个参数为0表示从文件开头开始计算,为1从上一次光标停的位置计算,为2从末尾开始计算,且此时第一个参数需加-号,第二个参数是1,2时需指定文件以b的方式打开

#读取文件最后一行,下面的第一种方法会加大内存,拖慢速度,相当于把整个文件都读取并缓存到内存中
f=open('a.txt','r+',encoding='utf-8')
data=f.readlines()
print(data[-1]) >>>2019/3/27 她做了sb一件事情 ####################
f=open('a.txt','rb')
for i in f:
offs=-10
while True:
f.seek(offs,2)
data=f.readlines()
if len(data)>1:
print('文件的最后一行是:%s'%data[-1].decode('utf-8'))
break
offs*=2 >>>文件的最后一行是:2019/3/27 她做了sb一件事情

f.truncate(10)从开头开始算,将文件只保留从0-10个字节的内容,文件必须以写的方式打开,w和w+除外

#循环文件的推荐方式:
f=open('')
for i in f:
......
 

python_09 文件处理流程,文件操作方法的更多相关文章

  1. Yii2 源码分析 入口文件执行流程

    Yii2 源码分析  入口文件执行流程 1. 入口文件:web/index.php,第12行.(new yii\web\Application($config)->run()) 入口文件主要做4 ...

  2. HDFS文件读写流程

    一.HDFS HDFS全称是Hadoop Distributed System.HDFS是为以流的方式存取大文件而设计的.适用于几百MB,GB以及TB,并写一次读多次的场合.而对于低延时数据访问.大量 ...

  3. 【转】漫谈linux文件IO--io流程讲的很清楚

    [转]漫谈linux文件IO--io流程讲的很清楚 这篇文章写的比较全面,也浅显易懂,备份下.转载自:http://blog.chinaunix.net/uid-27105712-id-3270102 ...

  4. Git基本命令 -- 基本工作流程 + 文件相关操作

    可以先找一个已经被git管理的项目, 我就使用这个项目吧: https://github.com/solenovex/ID3-Editor 基本工作流程 克隆以后呢, 进入该目录查看一下状态: 然后添 ...

  5. linux文件系统启动流程、启动脚本

    linux文件系统启动流程.启动脚本 下面是一张Linux启动流程图: 在了解启动流程之前,我们应该先知道系统的几个重要脚本和配置文件,他们对应的路径为: 1. /sbin/init 2. /etc/ ...

  6. Android中measure过程、WRAP_CONTENT详解以及 xml布局文件解析流程浅析

    转自:http://www.uml.org.cn/mobiledev/201211221.asp 今天,我着重讲解下如下三个内容: measure过程 WRAP_CONTENT.MATCH_PAREN ...

  7. Linux文件访问流程及磁盘inode和block总结

    Linux文件访问流程 inode是文件的唯一标识,文件名和inode的对应关系存放在上一级目录的block中:inode里有指向文件block的指针和文件的属性,从而通过block获得文件数据. 磁 ...

  8. Python的网络编程[5] -> BOOTP + TFTP + FTP -> 实现一个简单的文件传输流程

    BOOTP-TFTP-FTP 目录 文件传输流程 服务器建立过程 客户端建立过程 1 文件传输流程 / File Transfer Flow 利用BOOTP,TFTP,FTP三种传输协议,建立起客户端 ...

  9. diy文件系统上创建文件的流程

    [0]README 0.1) source code are from orange's implemention of a os , and for complete code , please v ...

随机推荐

  1. day 17 项目开发常用模块

    ---恢复内容开始--- time模块 import time print(time.time()) # 时间戳: print(time.strftime("%Y-%m-%d %X" ...

  2. vue 关闭浏览器

    在开发中的一个需求,vue中关闭浏览器, 直接使用window.close()在chrome.fireFox会不起作用 需要改为一下方式 window.open('about:blank','_sel ...

  3. 神州数码多区域OSPF配置

    实验要求:掌握多区域OSPF配置 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface s0/1 进入端口 ip address ...

  4. Gram格拉姆矩阵在风格迁移中的应用

    Gram定义 n维欧式空间中任意k个向量之间两两的内积所组成的矩阵,称为这k个向量的格拉姆矩阵(Gram matrix) 根据定义可以看到,每个Gram矩阵背后都有一组向量,Gram矩阵就是由这一组向 ...

  5. WEBBASE篇: 第四篇, CSS知识2

    CSS知识2 一, 尺寸 与 边框 CSS单位 1,尺寸单位:(1)px 像素   (2)%   (3) in 英寸  lin = 2.54cm (4)pt 磅 1pt = 1/72in    ppi ...

  6. Angular4.0引入第三方框架,eg: bootstrap、jquery

    最近学习angular4.0,在练习是需要使用jquery和bootstrap.但是查阅了,大多数都是angular2的方法,或者是angular4.0的方法但是不准确.花了一些时间终于捣腾出来了,把 ...

  7. hello1源码解析

    1.选择hello1文件夹并单击“打开项目” 2.展开网页节点,双击index.xhtml文件在编辑器中查看它 index.xhtml文件是facelets应用程序的默认登录页,在典型的facelet ...

  8. windows openssh server 安装试用

    使用Windows的可能会知道win10 的已经包好了openssh 服务,但是对于其他机器win 7 windows 2008 ,就需要其他的方法了 还好powershell 团队开发了支持wind ...

  9. because there was insufficient free space available after evicting expired cache entries

    Tomcat运行的时候哗哗哗的报警告 版本是Tomcat 8.5.15 告警信息关键字如下 because there was insufficient free space available af ...

  10. Spring Web常见面试问题

    一.Web容器初始化过程 先初始化listener,然后是filter,然后是servlet. 二.Spring MVC项目中IOC容器关系 Web容器启动时通知ContextLoaderListen ...