1.1 文件与文件路径
文件有俩个关键属性
,
第一为文件名
,
第二为文件路径
。路径还分为相对路径和绝对路径,在Linux中pwd命令为当前路径。相对路径为在本目录下的路径,绝对路径为在任意目录中输入绝对路径即可到达。附加卷,诸如 DVD 驱动器或 USB 闪存驱动器,在不同的操作系统上显示也不同。在 Windows 上,它们表示为新的、带字符的根驱动器。诸如 D:\或 E:\。在 OS X 上,它们表示为新的文件夹,在/Volumes 文件夹下。在 Linux 上,表示为新的文件夹,在/mnt(“mount”)文件夹下。同时也要注意,虽然文件夹名称和文件名在 Windows 和 OS X 上是不区分大小写的,但在 Linux 上是区分大小写的。
1.1.1 windows上的倒斜杠以及Linux,OS x上的正斜杠
在 Windows 上,路径书写使用倒斜杠作为文件夹之间的分隔符。但在 OS X 和 Linux 上,使用正斜杠作为它们的路径分隔符。
利用os 模块中的os.path.join()函数可以很好的解决这个问题
(有俩个倒斜杠是因为一个倒斜杠用来充当转义字符)
也可以利用os.path.join(‘路径’,文件名)来将文件添加到路径并将此路径输出
(输出时倒斜杠转义符将斜杠转义,所以输出一个倒斜杠)
1.1.2 当前工作目录
定位当前工作目录以及改变当前工作目录
(1)利用os模块中的os.getcwd()来获取当前工作目录
(2)利用os模块中的os.chdir(‘路径’)来改变当前工作目录
输入不存在的路径会返回一个错误信息
1.1.3 绝对路径与相对路径
绝对路径:从根目录开始
相对路径:相对于程序的当前文件目录
还有点(.)和点点(…),单个点代表当前文件夹的简称,俩个点代表根目录
相对路径
绝对路径
..\
C:\
.\Windows
C:\Windows
–
–
..\Temp
C:\Temp
1.1.4 处理绝对路径与相对路径
(1)利用os.path.abspath(路径)返回文件的绝对路径
(2)利用os.path.isabspath(路径)检验该路径是否为绝对路径,若为真,则为True,否则为False
(3)利用 os.path.relpath(path, start)将返回从 start(代表的参数) 路径到 path(代表的参数) 的相对路径的字符串。如果没有提供 start,就使用当前工作目录作为开始路径。
(4)利用os.path.basename(路径)返回路径最后一个倒斜杠以后的内容,利用os.path.dirname(路径)返回路径最后一个倒斜杠以前的内容
(5)如果同时需要一个路径的目录名称和基本名称,则利用os.path.split(路径)
也可以分别返回
(6)也可以利用字符串函数split ()来分别显示各个路径名称
1.1.5 利用os.makedirs()创建文件夹
1.1.6 利用os.removedirs()来删除文件夹
(1)os.removedirs()可以递归的删除文件夹以及文件夹下的子目录
(2)利用os.rmdir(路径) 删除文件夹
(3)利用os.remove(路径)删除文件
1.1.7 查看文件大小和文件夹中内容
(1)利用os.path.getsize(路径)获得该路径下的文件的字节数
(2)利用os.listdir(路径)列出该路径下的所有文件名
统计文件夹下总共有多少字节
1.1.8 检查路径有效性
(1)利用os.path.exists(path)判断该路径下是否存在文件或文件夹
(2)利用os.path.isdir(path)确定该路径是否为文件夹
(3)利用os.path.isfile(path)判断该路径下是否为文件
1.2 文件读写过程
文本文件包含纯文本文件和二进制文件
纯文本文件只包含基本文本字符,不包含字体、大小和颜色信息
二进制文件包含图形文件及文字处理程序等计算机程序。广义的二进制文件即指文件,由文件在外部设备的存放形式为二进制而得名。狭义的二进制文件即除文本文件以外的文件。文本文件是一种由很多行字符构成的计算机文件。
带有.txt 扩展名的文本文件,以及带有.py扩展名的 Python 脚本 文件,都是纯文本文件的例子。它们可以被 Windows 的 Notepad软件 或 OS X 的 TextEdit 应用打开。你的程序可以轻易地读取纯文本文件的内容,将它们作为普通的字符串值。
在Python中,读写文件有三个步骤:
(1)使用open()函数打开文件,并返回一个File对象
(2)使用File对象的read()或write()函数来读写
(3)使用File对象的close()函数来关闭文件
1.2.1 打开文件
编辑文本文档并且将文本格式改为.txt格式或者利用windows中的Notepad来编写文本文档。用 open()函数打开一个文件,就要向它传递一个字符串路径,表明希望打开的文件。这既可以是绝对路径,也可以是相对路径。
打开文件:
格式为 变量=open(路径)
利用变量作为打开文件后的赋值对象
也可以传入第二个参数’r’来设置为读模式
1.2.2 读取文件内容
利用返回对象的read()方法可以读取文本内容
MyFile的内容为中文,所以显示乱码,为二进制内容
(1)格式为 变量.read()
(2)reaflines() 方法可以获得一个包含字符串的列表,列表中的每个字符串就是文本的每一行。格式为 变量.readlines()
文本内容:
利用返回对象的readlines()方法来获取字符串列表
每个字符串都以\n结尾,除了最后一个字符串所代表的最后一行
1.2.3 写入文件
Python 允许我们将内容写入文本文件,方式与 print()函数将字符串“写”到屏幕上类似。但是,如果打开文件时用读模式,就不能写入文件。你需要以“写入纯文本模式”或“添加纯文本模式”打开该文件,或简称为“写模式”和“添加模式” 。 写模式将覆写原有的文件,从头开始,就像你用一个新值覆写一个变量的值。 将’w’作为第二个参数传递给 open(),以写模式打开该文件。不同的是,添加模式将 在已有文件的末尾添加文本。你可以认为这类似向一个变量中的列表添加内容,而 不是完全覆写该变量。将’a’作为第二个参数传递给 open(),以添加模式打开该文件。
如果传递给 open()的文件名不存在,写模式和添加模式都将会创建一个新的空文件。在读取或写入文件后,调用 close()方法,然后才可以打开该文件。
1.3 用shelve模块保存变量
利用shelve模块你可以将python程序中的变量保存到二进制的shelf文件中,这样在程序启动时。可以从shelf文件中读取文件的配置信息,从硬盘中恢复变量的数据。shelve模块让你在程序中添加’打开’和’保存’功能。
通过import 引入shelve模块,可以将列表赋予变量,类似于字典一样,赋予值以后要通过变量.close()关闭后重新打开才能生效,然后验证刚才输入的是否一致
在windows上运行以上代码,可以看到在当前你目录中看到.bak,.dat,.dir三种类型的文件,可以通过os.getcwd()来查看当前目录,并去文件管理器里面寻找
类似于字典,shelf文件也有自己的键和键对应的值,返回类似于列表的值,但不是真正的列表,所以我们要利用list()函数来将shelf文件的键与值转化为真正的列表
创建文件时,如果你需要在 Notepad 或 TextEdit 这样的文本编辑器中读取它们,纯文本就非常有用。但是,如果想要保存 Python 程序中的数据,那就使用 shelve 模块。
1.4 利用pprint.pformat()函数来保存变量
首先通过import 来引入pprint模块,创建一个含有字典的列表,利用pprint.pformat()来将其返回为一个字符串,然后创建一个,py文件,利用写函数将该字符串写入.py文件中,最后关闭该文件
关闭修改后的文件才能生效,需要再次打开该文件
引入刚才的.py文件,可以利用变量名.列表名输出列表里面的值,然后列表里面的字典中的键值对也可列举出来
创建一个.py 文件(而不是利用 shelve 模块保存变量)的好处在于,因为它是 一个文本文件,所以任何人都可以用一个简单的文本编辑器读取和修改该文件的内 容。但是,对于大多数应用,利用 shelve 模块来保存数据,是将变量保存到文件的 最佳方式。只有基本数据类型,诸如整型、浮点型、字符串、列表和字典,可以作 为简单文本写入一个文件。例如,File 对象就不能够编码为文本。