第八章的内容是文件和目录
8.1、文件对象
8.1.1用字符串对象来存储创建和访问示例文件的路径
牢记注意windows和linux的路径斜杠的不同。比如:windows下面C:\windows\Temp,Linux下/home/qizhf/,同时反斜杠在字符串中是一个特殊字符,是转义字符。关于转义字符,在初学C时遇到过,并且貌似关于转义字符的定义,各个语言都相同。因此,在windows下,路径C:\windows\Temp必须表示为“C:\\windows\\Temp”,记得刚开始工作时编的程序在此处出过BUG。python中还可以这样通过在开头的引号钱放置字母r,取消字符串中对反斜杠的特殊处理。
>>>path = ” C:\\sample.txt”
或者
>>>path = r”C:\sample.txt”
linux下
>>>path = “/tmp/sample.txt”
8.1.2、编写文本文件。
流程和C很像,需要先打开,指定打开的模式,再读或者写,最后关闭文件,主要是因为操作系统设计打开文件的过程也是这样吧。注意需要加载操作系统模块 用语句import os
打开一个文件:file = open(‘test.txt’, “w”)
open(路径名,打开模式)
打开模式有 w:写文件,如果文件不存在,就创建之;
r:读文件,默认参数,可以省略。
a:向从文件的结尾处追加数据。
向文件中写入数据:file.write(“xxxxxxxxxxxxxxxxxxxxxxx”)
关闭文件:file.close()
注意:相对路径和绝对路径
读出一行文件:file.readline()
一次性读出文件中的所用内容file.read()
疑问:P118,说当完成读操作时,删除文件对象并关闭文件。我怎么觉得应该先关闭文件,再删除文件对象。
8.1.3文件异常IOError异常。
异常的情况包括哪些。
8.2、 路径和目录
注意垮平台时如何解决各个操作系统的目录表示不一样。
8.3、OS中的异常 OSError
8.3.1路径
模块0s中包含另一个模块os.path,提供路径操作函数。路径也是字符串,可以按字符串进行个各种操作,产生的问题是:不易移植和处理特殊情况困难。使用os.path为了解决这些问题。
os.path.join()可以将目录名称组合成路径。注:可以指定多于两个的名称。
os.path.split()具有相反功能,它将路径的最后一个组件提取出来。该函数返回包含两个想的元组:父目录的路径以及最后一个路径组件。自动分解序列:
>>>parent_path , name = os.path.split(“C:\\Program Files\\Python30\\Lib”)
疑问:P121函数split_fully(path)无法正常运行,问题出在最后一句,没搞明白。
注意python特有的数据元组,列表,词典。
os.path.splitext()分解文件的扩展名。此函数返回一个包含两个元素的元组。
os.path.normpath()规范化或“清理”路径。
os.path.abspath()可以将一个相对路径变为一个绝对路径。
注意:os.path下面的所用路径操作函数都不检查正在操作的路劲是否存真正存在,需要自己编写检测代码。
os.path.exists()判断某个路劲是否实际存在。此函数返回True或者False
8.3.2 目录内容
”.“ 代表当前目录,”..”代表当前目录的父目录。
os.listdir()可以返回一个目录下的所用名称条目,包括文件和子目录等内容。
练习例子,此函数列出某个目录中的内容:
def print_dir(dir_path):
for name in os.listdir(dir_path):
print(os.path.join(dir_path, name))