美文网首页
Python篇-文件操作

Python篇-文件操作

作者: TianTianBaby223 | 来源:发表于2018-10-23 08:44 被阅读7次

一 : 文件的基本操作

( 1 )只读

  • 打开文件

以utf-8的编码方式打开
f 是 open函数调用操作系统,返回的文件句柄,文件句柄相当于乘载硬盘上的资源的一连同方式在读的时候相当于一个容器,取操作系统的资源
encoding 不写默认是系统的

文件默认打开是只读模式

f = open('22.txt',encoding='utf-8')
print(f.read())
夜来风雨声,
花落知多少.
  • 一行一行读文件
f = open('22.txt',encoding='utf-8')
print(f.readline(),end='')
print(f.readline())
夜来风雨声,
花落知多少.
  • readLines
f = open('22.txt',encoding='utf-8')
print(f.readlines())
['夜来风雨声,\n', '花落知多少.\n']
  • 关闭文件

使用完毕后需要释放

f.close

( 2 )只写

相当于新建立空文档,覆盖原来的文件,再开始写.

f = open('美美.txt','w',encoding='utf-8')
f.write('1111\n')
f.write('美美美\n')
f.write('哈哈哈哈\n')
f.close()

美美.txt

1111
美美美
哈哈哈哈
  • writable()

是否是可写的

print(f.writable())
True
  • writelines
f.writelines(['555\n','6666\n'])
555
6666
  • 文件内容只能是字符串,只能写字符串
f.writelines(['555\n','6666\n',1])
TypeError: write() argument must be str, not int

( 3 )a模式

也是写,只是追加的方式写到文件最后

f = open('美美.txt','a',encoding='utf-8')
f.write('加油啊')
555
6666
加油啊

( 4 )r+模式

既能读,又能写,写操作是在光标处开始覆盖

f = open('美美.txt','r+',encoding='utf-8')
# print(f.read())
f.seek(2)
f.write('zzzdfdf')

文件修改操作模拟

scr_f = open('美美.txt','r',encoding='utf-8')
data = scr_f.readlines()
scr_f.close()
dst_f = open('美美.txt','w',encoding='gbk')
dst_f.writelines(data[0])
dst_f.close()

with 方式

with open('a.txt','w',encoding='uft-8') as f:
    f.write('哈哈哈')

with 方式处理多个文件

with open('美美.txt') as f,\
    open('a.txt','w') as f2 :
    data = f.read()
    f2.write(data)

二 : 文件处理b模式

可以处理非文本的骚操作,实现跨平台
b的模式不能指定编码

( 1 )rb模式

f = open('test','rb')#b的方式不能指定编码
#取出字节
data = f.read()
print(data)
b'\xe4\xbd\xa0\xe6\x98\xaf\xe8\xb0\x81\xe5\x95\x8a,\n\xe5\x95\x8a\xe5\x95\x8a\xe5\x95\x8a\xe5\x95\x8a,\n\xe5\x93\x88\xe5\x93\x88\xe5\x93\x88\xe5\x93\x88.'

把文件以字节的方式取出来,解码后可以看到数据

print(data.decode('utf-8'))

( 2 )wb模式

f = open('test1','wb') #b的方式不能指定编码

##把字符串转换为byte类型
f.write(bytes('啦啦',encoding='utf-8')) 
f.write('也许'.encode('utf-8'))

( 3 )ab模式

文件的最后一个位置追加

f = open('test1','ab') #b的方式不能指定 编码,文件的最后一个位置追加
f.write('啥玩意'.encode('utf-8'))
f.close()

三 : 文件处理骚操作

f = open('test2','w',encoding='uft-8')
  • closed

文件是否关闭

print(f.closed)
  • f.encoding

显示文件打开的编码

print(f.encoding)
  • f.flush()

将内存数据刷到硬盘上

  • f.tell()

光标当前所在位置,返回在第几个字节

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

print(f.tell())
  • newline

读取文件真正的换行符号
python 会将\r\n处理成\n,newline会让其显示真正的样貌,假如是windows平台使用,newline = ''则会显示\r\n

f = open('b.txt','r',encoding='utf-8',newline='')
f.readline()
  • seek
    参数是字节
    用来控制光标的移动
    文件中存的是中文一个字符占三个字节,移动一个字节,在utf-8下无法正确解码.
f = open('b.txt','r+',encoding='utf-8')
f.seek(1)
print(f.read())
'utf-8' codec can't decode byte 0x93 in position 0: invalid start byte

read(4)读取4个字符

 read(4) 读的是字符
 print(f.read(2))
  • f.truncate
    文件截断,是一种写操作,w+不可以,其他+可以,因为w+会直接覆盖文件,无法截取
f.truncate(10)

四 : Seek操作拓展

( 1 )seek总是从0位置开始

默认0模式,代表每次从0位置开始

f = open('seek.txt','rb')
f.seek(10)
print(f.tell())
f.seek(3)
print(f.tell())
10
3

( 2) seek 1 模式

代表的是相对位置
使用1时候,文件需要以b的方式

f = open('seek.txt','rb')
f.seek(10,1)
print(f.tell())
f.seek(3,1)
print(f.tell())
10
13

( 3 )seek 2 模式

相对位置代表从文件末尾开始seek
使用2时候,文件需要以b的方式
从文件末尾开始前移动 5个字节,然后再开始正着读取

f = open('seek.txt','rb')
f.seek(-5,2)
f.read()
应用 : 读取最后一条日志文件

如果正序读出,放入内存则比较浪费,我们可以从后面往前面读取

#循环文件的方式
for i in f:
    offs = -10
    while True:
        f.seek(offs,2)
        data = f.readlines()
        if len(data) > 1 :
            print('文件的最后一行是 : ' + data[-1].decode('utf-8'))
            break
        offs*=2

相关文章

  • 6.3Pytyhon文件的操作(三)

    目录 [TOC] 前言 这是相续上两篇6.1Python文件的操作(一)6.2Python 文件的操作的第三篇文章...

  • Python篇-文件操作

    一 : 文件的基本操作 ( 1 )只读 打开文件 以utf-8的编码方式打开f 是 open函数调用操作系统,返...

  • 14.Python之文件操作

    Python之文件操作 文件操作通过Python中的内置函数open()对文件进行操作。文件操作需要如下几个参数:...

  • python的进修之路

    python基础篇(一)【变量,赋值,输入,输出和导入,运算符,数据类型,文件基本操作】 python基础篇(二)...

  • 第二节课:Python 操作文件 ——软件测试派

    学习目标:掌握 python 操作文件 python 提供内置函数 open()实现对文件的操作。 python ...

  • 6.2Python文件的操作(二)

    目录 [TOC] 前言 该篇是相继上一篇6.1Python文件操作(一)之后的进阶文章。 (一)文件的定位 (1)...

  • Python遍历目录并操作文件

    今天来使用python操作文件,包括根据模式查找文件、删除文件操作。 完整代码托管在python/find...

  • 解析Python中的文件操作

    1.简介 在Python中无需引入额外的模块来进行文件操作,Python拥有内置的文件操作函数(除了内置文件操作函...

  • Python 文件操作

    一. Python 读写 创建文件 Python中对文件,文件夹(文件操作函数)的操作需要涉及到OS 模块和 sh...

  • Python

    Python 创建文件 Python 对数据库进行操作--增删改查 Python 对csv进行操作 Python ...

网友评论

      本文标题:Python篇-文件操作

      本文链接:https://www.haomeiwen.com/subject/vrrkaftx.html