文件处理流程

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. L2-024. 部落(并查集)*

    L2-024. 部落 参考博客 #include<cstdio> #include<iostream> #include<set> #include<algo ...

  2. 判断是不是微信浏览器和QQ内置浏览器

    is_weixn() { let ua = navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenger/i) == "mi ...

  3. window.location.href webkit不兼容

    window.event.returnValue=false; 在location.href后加上后修复 来自为知笔记(Wiz)

  4. Error: No EPCS layout data - looking for section [EPCS-C84018]

    /********************************************************************** * Error: No EPCS layout data ...

  5. 安装Python 3.6 在Ubuntu 16.04 LTS 版本

    Collecting tensorflow Could not find a version that satisfies the requirement tensorflow (from versi ...

  6. InstallShield-常用prq文件的下载地址

    VC 2010 redist X86: http://saturn.installshield.com/is/prerequisites/microsoft visual c++ 2010 redis ...

  7. 数组,集合,字符串,bean,map

    //[字符串]转成[数组] String[] arr = "1,2,3,4,5,6".split(","); //[String数组]转成[Long数组] Lo ...

  8. PHP is_writeable 存在bug , 写一个自定函数 判断文件是否可写

    $is_w = function($file){ if(DIRECTORY_SEPARATOR == '/' and @ini_get('safe_mode')==false){ return is_ ...

  9. 第四节《Git检出》

    使用过Git的朋友们都谁知道git reset可以达到重置效果,不知道的小伙伴们可以看下上一篇博客,重置命令的一个用途就是修改引用的游标指向,实际上在执行重置命令的时候没有使用任何参数对所要重置的分支 ...

  10. Linux学习--“杀死”程序

    (cp https://billie66.github.io/TLCL/book/chap11.html) While this is all very straightforward, there ...