Python 全栈开发:python文件处理

摘要:
在实际的代码编写过程中,人们经常忘记f.close(),这导致系统的打开文件总是占用资源,这是一种可耻的浪费。使用with关键字将管理权限移交给解释器,这样您就不必注意文件的关闭,例如:withopenasf:data=f。read()#读取文件dedata=data。decode#解码操作打印(字节)
python文件处理

打开文件的模式

Python 全栈开发:python文件处理第1张

file常用函数

Python 全栈开发:python文件处理第2张

一、打开文件,关闭文件

操作文件的流程:

#1. 打开文件,得到文件句柄并赋值给一个变量
#2. 通过句柄对文件进行操作
#3. 关闭文件

获取文件句柄open()方法:返回一个file对象

语法格式:

#file = open(filename,mode,encoding)    #打开文件

#文件操作    文件的读和写            

#file.close()                  #关闭文件

常用参数

filename: 要打开的文件路径

mode: 打开文件的模式(见上图)

encoding:打开文件的编码格式

注意点:

filename是文件的路径,当我们使用绝对路径的时候

eg:

f = open('C:UsersFixdq1.txt',mode='r',encoding='utf-8'):
    data = f.read()
    print(data)

报错:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated UXXXXXXXX escape

报错原因:pyrhon中使用反斜杠()进行字符串的转义操作,这就可能导致路径被转义成其他字符,导致路径无法被解析

解决方法:在路径字符串前加一个 r (rawstring 原生字符串)

eg:

f = open(r'C:UsersFixdq1.txt',mode='r',encoding='utf-8'):
    data = f.read()
    print(data)
#这样就不会出现路径错误的信息了

二、mode打开文件的模式

1.默认文本模式(t模式)

  • r, 只读  (默认模式,文件必须存在,不存在报错)
  • w,只写  (不可读,不存在创建,存在清空内容)
  • a,追加  (不可读,不存在创建,存在末尾追加)

2.字节模式(b模式)

  图片,视频,音乐等非文本文件,都是以字节的模式存储的,需要用字节模式(b模式)进行读写

  同样在计算机中所有的文件都是以字节模式存储的,使用(b模式)无需考虑文件类型

  注:以b模式打开时,读取到的内容是字节类型,写入时也必须是字节类型(不能设置encoding  编码类型)

  • rb, 只读  (文件必须存在,不存在报错)
  • wb,只写 (不可读,不存在创建,存在清空内容)
  • ab,追加  (不可读,不存在创建,存在末尾追加)

3.可读写模式(+模式)

  • r+,r+b    读写   (可读,可写) (文件必须存在,不存在报错)
  • w+,w+b 写读  (可写,可读)(文件不存在创建,存在清空内容)
  • a+,a+b  写读  (可写,可读)(文件不存在创建,存在清空内容)

三、常用的方法

大前提,被读取的文件 a.txt 已存在(不存在会报错)

a.txt 文件内容

这一个可读的文件11
这一个可读的文件22
这一个可读的文件33

f.read()      读取文件的所有字符

#打开文件(前提 a.txt 存在)
f = open('a.txt',mode='r',encoding='utf-8')
print(f.read())
f.close()

Python 全栈开发:python文件处理第3张

f.readline()    读取文件中的一行

f = open('a.txt',mode='r',encoding='utf-8')
print(f.readline())
f.close()

Python 全栈开发:python文件处理第4张

f.readlines()    读取文件中的所有行,并以        行        为单元素返回一个列表

f = open('a.txt',mode='r',encoding='utf-8')
print(f.readlines())
f.close()

Python 全栈开发:python文件处理第5张

循环读取

f = open('a.txt',mode='r',encoding='utf-8')
for i in f:
    print(i)    
f.close()

Python 全栈开发:python文件处理第6张

f.write()

f.writelines()

f=open(r'a1.txt',mode='w',encoding='utf-8') #默认是wt
f.write('第一行
')
f.write('第二行
')
f.writelines(['1111
','2222
','3333
'])  # 向文件写入字符串列表
f.write('aaaaa
bbbb
ccccc
')

Python 全栈开发:python文件处理第7张

追加模式(a)

#a:只追加写模式
#注意:
#在文件不存在时,创建空文件
#在文件存在时,光标直接跑到文件末尾

f=open('access.log',mode='a',encoding='utf-8')
# print(f.writable())
# f.readlines() #报错
f.write('5555555555555
')
f.close()

指针(光标)

f = open('a.txt',mode='r',encoding='utf-8')

print(f.readline(),end='')
print(f.readline(),end='')
print(f.readline(),end='')
print(f.readline(),end='')
print(f.readline(),end='')

f.close()

Python 全栈开发:python文件处理第8张

从上面的结果中我们可以看到 ,我们一共读取了 5 行  ,只显示了三行 。因为在文件读取过程中有个指针,文件读到了哪里,指针就会指到哪里,读取三行以后,指针已经在文件的末尾了,此时在进行文件的读操作将不会有任何内容。

结论:读到哪里,指针就指到哪里,指针在末尾,将读取不到内容

 

四、上下文管理

为什么要有上下文管理呢?

实际的代码编写过程中,经常会有人忘记 f.close(),这导致系统打开的文件一直占用资源,这是很可耻的浪费行为。

怎么办?

使用with 关键字,将管理权,交给解释器,这样就不需要关注文件的关闭了

eg:

with open('sh',mode='rb') as f:
    data = f.read()#以bytes读取文件
    dedata=data.decode('utf-8')#解码操作
    print(dedata)

免责声明:文章转载自《Python 全栈开发:python文件处理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python 全栈开发:python函数基础Python 全栈开发:python字符编码下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

PySide: Python for Qt 1.0发布 编程语言 ITeye资讯

PySide: Python for Qt 1.0发布 - 编程语言 - ITeye资讯 liangguanhui 写道 xuby 写道 Qt 都已经被卖掉了~~ 卖了后,GPL才变成LGPL…… 是又被卖掉了。Nokia把Qt卖给了芬兰Digia公司。...

VC中句柄、指针、ID之间的转换

win32直接操作的是句柄HANDLE,每个句柄就对应windows窗口,而vc对HANDLE进行类封装,间接操作的都是HANDLE,现在句柄只是类的一个成员变量。 从句柄到指针 CWnd* pWnd=CWnd::FromHandle(hWnd); //a temporary CWnd object is created //and attached. pW...

值返回和指针返回简说

值返回和指针返回简说 - Shell909090 - 随笔杂记 值返回和指针返回简说 好吧,这是常识,我说快点。 C ﹡ c = get_c(); 这是指针返回。 C c = get_c(): 这是值返回。 指针返回的缺点是,你必须检测返回指针的有效性,也就是NULL。并且,你需要手工管理指针释放。而优点则是避免了值拷贝,还有可以返回空值,即通过返回NU...

Editplus For Python[转]

EditPlus是我常用的文件编辑器之一,用它来下脚本程序甚是方便,下面来看看如果配置吧: 1.先到www.editplus.com上下载editplus.exe,一步一步安装就好了,只有30天的试用期。 2.来配置python环境,到www.editplus.com 上下载python配置环境,要下载对应的版本啊。(为了实现语法加亮和自动完成功能,需要下...

列举一些常见的Python HTTP服务器

要使 Python 写的程序能在 Web 上被访问,还需要搭建一个支持 Python 的 HTTP 服务器。下面列举一些常见的 Python HTTP 服务器,以及它们目前的大致发展情况,以便用户的对比选择: Name Version http 1.1 Flavour Repo. Community Gunicorn 0.6.4 No...

Python入门:装饰器

装饰器:本质是函数,(功能:装饰其他函数),也就是为其他函数添加附加功能 原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 实现装饰器知识储备: 1.函数即“变量” 2.高阶函数 a:把一个函数名当做实参传给另外一个函数(在不修改被装饰函数源代码的情况下为其添加功能) b:返回值中包含函数名(不修改调用函数的方式) 3.嵌套函数...