零基础入门学Python(八)—— 永久存储

零基础入门学Python(八)—— 永久存储,第1张

概述零基础入门学Python系列内容的学习目录→\rightarrow→零基础入门学Python系列内容汇总。1.文件1.1打开文件1.2文件对象的方法1.3文件的关闭1.4文件的读取和定

零基础入门学Python系列内容的学习目录 → \rightarrow →零基础入门学Python系列内容汇总。

1. 文件1.1 打开文件1.2 文件对象的方法1.3 文件的关闭1.4 文件的读取和定位1.5 文件的写入2. 文件系统3. pickle模块

  需要学习的基础知识有:文件、文件系统、pickle模块等。

1. 文件

  几种常用的文件格式:.exe是可执行文件格式,.txt是文本文件,.ppt是PowerPoint的专用格式等。

1.1 打开文件

  在Python中,使用open()函数来打开文件并返回文件对象,该函数的常用语法格式如下:

file = open(file_name [, mode='r' [ , buffering=-1 [ , enCoding = None ]]])

此格式中,用 [ ] 括起来的部分为可选参数,即可以使用也可以省略。其中,各个参数所代表的含义如下:

file:表示要创建的文件对象。file_name:要创建或打开文件的文件名称,该名称要用引号(单引号或双引号都可以)括起来。需要注意的是,如果要打开的文件和当前执行的代码文件位于同一目录,则直接写文件名即可;否则,此参数需要指定打开文件所在的完整路径。mode:可选参数,用于指定文件的打开模式。可选的打开模式如表1所示。如果不写,则默认以只读(r)模式打开文件。buffering:可选参数,用于指定对文件做读写 *** 作时,是否使用缓冲区。enCoding:手动设定打开文件时所使用的编码格式,不同平台的 eCoding 参数值也不同,以 windows 为例,其默认为 cp936(实际上就是 GBK 编码)。
表1 文件的打开模式
@H_502_68@打开模式执行 *** 作‘ r ’以只读方式打开文件(默认)’ w ’以写入的方式打开文件,会覆盖已存在的文件’ x ’如果文件已经存在,使用此模式打开将引发异常‘ a ’以写入模式打开,如果文件存在,则在末尾追加写入’ b ’以二进制模式打开文件’ t ’以文本模式打开(默认)’ + ’可读写模式(可添加到其他模式中使用)’ U ’通用换行符支持

  使用open()成功打开一个文件之后,它会返回一个文件对象,拿到这个文件对象,就可以读取或修改这个文件:

  example1:>>># 先将record.txt文件放到Python的根目录下(如C:\Python)
       >>>f= open(“record.txt”)

  这样我们就成功打开了record.txt文件。

1.2 文件对象的方法

  打开文件并取得文件对象之后,就可以利用文件对象的一些方法对文件进行读取或修改等 *** 作。表2列举了平时常用的一些文件对象方法。

表2 文件对象方法
@H_502_68@文件对象的方法执行 *** 作close()关闭文件read(size = -1)从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回readline()从文件中读取一整行字符串write(str)将字符串str写入文件writelines(seq)向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象seek(offset, from)在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移 offset个字节tell()返回当前在文件中的位置1.3 文件的关闭

  close()方法用于关闭文件。如果你对文件进行了写入 *** 作,那么应该在完成写入之后关闭文件。因为Python可能会缓存我们写入的数据,但如果中途发生类似断电之类的事故,那些缓存的数据根本就不会写入到文件中。所以,为了安全起见,我们要养成使用完文件后立刻关闭的好习惯。

1.4 文件的读取和定位

  文件的读取方法很多,可以使用文件对象的 read()readline()方法,也可以直接List(f)或者直接使用选代来读取。read()是按字节为单位进行读取,如果不设置参数,那么会全部读取出来,文件指针指向文件末尾。tell()方法可以告诉我们当前文件指针的位置。
  我们新建一个“小王子.txt”的文件,内容如下:

我们整天忙忙碌碌,
像一群群没有灵魂的苍蝇,
喧闹着,
躁动着,
听不到灵魂深处的声音。
时光流逝,
童年远去,
我们渐渐长大,
岁月带走了许许多多的回忆,
也消蚀了心底曾今拥有的那份童稚的纯真,
我们不顾心灵桎梏,
沉溺于人世浮华,
专注于利益法则,
我们把自己弄丢了。

  example1:>>> f= open(“小王子.txt”, enCoding=‘utf-8’)
       >>> f.read()
       ‘我们整天忙忙碌碌,\n像一群群没有灵魂的苍蝇,\n喧闹着,\n躁动着,\n听不到灵魂深处
       的声音。\n时光流逝,\n童年远去,\n我们渐渐长大,\n岁月带走了许许多多的回忆,\n
       也消蚀了心底曾今拥有的那份童稚的纯真,\n我们不顾心灵桎梏,\n沉溺于人世浮华,\n专
       注于利益法则,\n我们把自己弄丢了。’
       >>> f.tell()
       395

  使用seek()方法可以调整文件指针的位置。seek(offset, from)方法有两个参数,表示从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset字节。因此将文件指针设置到文件起始位置,使用seek(0, 0)即可:

       >>> f.seek(0, 0)
       0
       >>> f.tell()
       0

  readline()方法用于在文件中读取一整行,就是从文件指针的位置向后读取,直到遇到换行符(\n)结束。

       >>> f.readline()
       ‘我们整天忙忙碌碌,\n’

  之前我们学习过列表的强大,当时说什么都可以往里放,在这我们也可以把整个文件的内容放到列表中:

       >>> List(f)
       [‘像一群群没有灵魂的苍蝇,\n’, ‘喧闹着,\n’, ‘躁动着,\n’, ‘听不到灵魂深处的声音
       。\n’, ‘时光流逝,\n’, ‘童年远去,\n’, ‘我们渐渐长大,\n’, ‘岁月带走了许许多多的
       回忆,\n’, ‘也消蚀了心底曾今拥有的那份童稚的纯真,\n’, ‘我们不顾心灵桎梏,\n’, ’
       沉溺于人世浮华,\n’, ‘专注于利益法则,\n’, ‘我们把自己弄丢了。’]

  迭代读取文本文件中的每一行:

       >>> f. seek(0, 0)
       0
       >>> for each_line in f:
           print(each_line)
       我们整天忙忙碌碌,
       像一群群没有灵魂的苍蝇,
       喧闹着,
       躁动着,
       听不到灵魂深处的声音。
       时光流逝,
       童年远去,
       我们渐渐长大,
       岁月带走了许许多多的回忆,
       也消蚀了心底曾今拥有的那份童稚的纯真,
       我们不顾心灵桎梏,
       沉溺于人世浮华,
       专注于利益法则,
       我们把自己弄丢了。

1.5 文件的写入

  如果需要写人文件,请确保之前的打开模式有’w’或’a’,否则会出错:

  example1:>>> f= open(“文件.txt”)
       >>> f.write("这是一段待写入的数据’)
       Traceback (most recent call last):
        file “<pyshell#41>”, line 1, in < module >
         f.write(“这是一段待写入的数据”)
       io.UnsupportedOperation: not writable
       >>> f.close()
       >>> f= open(“文件.txt”, “w”)
       >>> f.write(“这是一段待写入的数据”)
       10

  再次打开“文件.txt”之后,会发现文本"这是一段待写入的数据"已写入文件中。但是要注意的是,使用‘w’模式写入文件,此前的文件内容会被全部删除。如果要在原来的内容上追加,一定要使用’a’模式打开文件。

2. 文件系统

  接下来学习跟Pyhton的文件相关的一些十分有用的模块。例如使用random模块中的randint()函数来生成随机数。

  example1:>>>import random
       >>> random.randint(0, 9)
       1
       >>> random.randint(0, 9)
       5
       >>> random.randint(0, 9)
       7

  OS模块是Operating System的缩写,也就是 *** 作系统。对于文件系统的访问,Pyhton一般是通过OS模块来实现的。表3中列举了OS模块中关于文件/目录常用的函数使用方法。

表3 OS模块中关于文件/目录常用的函数使用方法
@H_502_68@函数名使用方法getcwd()返回当前工作目录chdir(path)改变工作目录Listdir(path=’.’)列举指定目录中的文件名(’.’表示当前目录,’. .'表示上一级目录)mkdir(path)创建单层目录,如该目录已存在抛出异常makedirs(path)递归创建多层目录,如果该目录已存在则抛出异常,注意:'E:\ \ a \ \ b’和 ’E:\ \ a \ \ c’并不会冲突remove(path)删除文件rmdir(path)删除单层目录,如果该目录非空则抛出异常removedirs(path)递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常rename(old,new)将文件old重命名为newsystem(command)运行系统的shell命令os.curdir指代当前目录(’.’)os.pardir指代上一级目录(’. .’)os.sep输出 *** 作系统特定的路径分隔符(在windows下为’ \ \ ‘,linux下为’ / ')os.linesep当前平台使用的行终止符(在windows 下为’\r\n’,linux下为’\n’)os.name指代当前使用的 *** 作系统(包括’posix’、‘nt’、mac’、'os2’、‘ce’、‘java’)3. pickle模块

  使用Python的picke模块可以非常容易地将列表字典这类复杂数据类型存储为文件。picke模块几乎可以把所有Python的对象都转化为二进制的形式存放,这个过程称为pickling,那么从二进制形式转换回对象的过程称为unpickling。

  example1:>>> import pickle
       >>> my_List =[123, 3.14,‘小明’, [‘其他列表’]]
       >>> pickle_file= open(‘E:\python\ \my_List.pkl’, ‘wb’)
       >>> pickle. dump(my_List, pickle_file)
       >>> pickle_file.close( )

  分析一下:这里希望把这个列表永久保存起来(保存成文件),打开的文件一定要以二进制的形式打开,后缀名可以随意,不过既然是使用pickle保存,为了今后容易记忆,建议还是使用.pkl 或.pickle。使用dump方法来保存数据,完成后记得保存,跟 *** 作普通文本文件一样。
  程序执行之后E盘的python文件夹下会出现一个my List.pkl的文件,用记事本打开之后显示乱码(因为保存的是二进制形式),如下图所示。

  在使用的时候只需用二进制模式先把文件打开,然后用load把数据加载进来:

  example2:>>> import pickle
       >>> pickle_file= open(‘E:\python\ \my_List.pkl’, ‘rb’)
       >>> my_List = pickle.load(pickle_file)
       >>> print(my_List)
       [123, 3.14, ‘小明’, [‘其他列表’]]

总结

以上是内存溢出为你收集整理的零基础入门学Python(八)—— 永久存储全部内容,希望文章能够帮你解决零基础入门学Python(八)—— 永久存储所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1186134.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存