码迷,mamicode.com
首页 > 其他好文 > 详细

025基本的文件操作

时间:2019-11-06 23:19:12      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:请求   字符编码   head   use   保存数据   文件的操作   二进制   存在   虚拟   

基本的文件操作


虽然视频、音频和图片在硬盘中也是用二进制来存储的,但是上一章节讲的字符编码只和文本文件有关,因为utf-8格式的编码并不使用视频,视频有其本身的编码格式,如MP4、avi、mkv等。

一、什么是文件

文件时操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位。文件的操作是基于文件,即文件的操作核心就是:读和写。也就是只要我们想要操作文件就是对操作系统发起请求,然后由操作系统将用户或者应用程序对文件的读写操作转换成集体的硬盘指令(比如控制盘片转动,控制机械手臂移动,以此来读取数据)。

二、为什么要有文件?

内存无法永久保存数据,但凡我们想要永久保存数据都要需要把文件保存到硬盘中,而操作文件就可以实现对硬件的操作。

三、如何用文件?

现在我们有一个需求要把用户输入的账号密码存储到硬盘中,我们使用Python该如何操作呢?

name='reed'
pwd=123

3.1 从硬盘中读取数据

如果我们需要打开一个文件,需要向操作系统发起请求,要求操作系统打开文件,占用操作系统资源。Python中使用open()方法可以打开某个具体的文件,open()方法那日写入文件路径。

open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt')

如果给列表增加值,我们需要给列表赋值后才能给对应的列表增加值。文件也是如此。

lis=[1,2,3]
lis.append(4)
lis.append(5)
#打开文件
f = open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt')
print(f)
###输出结果:
<_io.TextIOWrapper name='/Users/mac/desktop/jupyter/pythonCourseware/32.txt' mode='r' encoding='UTF-8'>

打开文件之后,文件不仅占用了内存,他还对应了操作系统打开的文件,相当于使用文件编辑器打开了一个文件。并且我们说了我们操作文件只是为了读和写,因此打开文件并不是目的,读和写才是目的,接下来我们藏式如何读写文件。

# read模式打开文件
f = open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt', mode='r')
# 读取文件内容,向操作系统发起读请求,会被操作系统转成具体的硬盘操作,将内容由硬盘读入内存
data = f.read()
print(data)
# 由于Python的垃圾回收机制只回收引用计数为0的变量,但是打开文件还占用操作系统的资源,所以我们需要回收操作系统的资源资源
# del f 只是回收变量f
f.close()
name='reed'
pwd=123

3.2 写入数据

# write模式打开文件
f = open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt', mode='w')
f.write("""name = 'nick'
pwd = '123'""")
f.close()
f = open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt', mode='r')
data = f.read()
print(data)
####输出结果:
name = 'first Reed'
pwd = '123'

open()函数返回一个流对象(stream object),它拥有一些用来获取信息和操作字符流的方法和属性。在函数中我们指定了被打开文件的文件名与希望使用的打开模式。

其中打开模式包括:

模式 描述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(Python 3 不支持)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

默认为文本模式,如果要以二进制模式打开,加上 b

四、总结

打开文件总而言之分为三步:

  1. 打开文件
  2. 读写
  3. 关闭

025基本的文件操作

标签:请求   字符编码   head   use   保存数据   文件的操作   二进制   存在   虚拟   

原文地址:https://www.cnblogs.com/FirstReed/p/11809089.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!