文件与异常 这章中,遇到的关于出现 UnicodeDecodeError: 'gbk' codec can't decode byte 0xa7 in position 4: illegal multibyte sequence 报错问题,程序运行后出现 \ufeff 问题都会有解释和处理办法
# 第七章 # 文件与异常 # 文件与文件类型 # 文件是一组相关数据的集合 # 组成文件的数据可以是ASCII编码,也可以是二进制编码 # 文件一定有一个文件名,文件名的长度和命名规则因不同的操作系统而异。但是无论是何种操作系统 # 文件名都包含两部分:主文件名和扩展名,两者之间用“.”隔开 # 全文件名 由用户根据操作系统的命名规则自行命名,用来与其他文件加以区别 # 扩展名 根据文件类型对应专属的缩写,用来指定打开和操作该文件的应用程序 # 例如,编写并保存的Python 语言源程序文件对应的扩展名就是.py # 表示该文件需要用 Python 语言编辑器打开和处理 # 一般来说,文件都是按文件名访问的,一方面通过主文件名指明访问对象 # 另一方面通过扩展名指定访问和处理文件的应用程序 # 目录与文件路径 # 文件是用来组织和管理一组相关数据的,而目录是用来组织和管理一组相关文件的 # 目录又可称为文件夹,可以包含文件,也可以包含其他目录 # 文件保存的位置称为路径。 # 1.绝对路径 # 绝对路径是指从文件所在驱动器名称(又称“盘符“始描述文件的保存位置) # 文件“5-1py”的对路径是“F盘根目下documents 目录下 python 目录下5-1.py文件” # 具体可表示为: # F:\documents\python\5-1.py # 其中,反斜杠“\”是盘符、目录和文件之间在 Windows 换系统下的分隔符 # 如果要在Python 程序中描述一个文件的径,需要使用字符串 # 因为在字符串中,反斜杠“ ”是转义序列符,所以为了还原反斜杠分隔符的含义 # 在字符串中要连续写两个反斜杠如 # “F:\\documents\\python\\5-1.py”。 # 为了书写简便,Python 语言提供了另一种路径字符串的表示方法: # r "F:\documents\python\5-1.py" # 其中,r表示取消后续字符串中反斜杠“”的转义特性 # 在后续的代码中这两种路径字符写法会交替使用,请读者注意 # 2.相对路径 # 相对路径是指从当前工作目录开始描述文件的保存位置 # 每个运行的程序都有一个当前工作目录,又称为 cwd # 一般来说,当前工作目录默认为应用程序的安装目录,可以通过Python语言自带的 os库函数 重新设置 # 下面的代码尝试将 cwd 从系统默认的设置修 documents 目录 import os os.getcwd() #查看当前工作目录 print(os.getcwd()) # E:\Python\pythonProject os.chdir('E:\\Python\\Ptest') #修改当前工作目录为 E盘根目录下 \Python\Ptest print(os.getcwd()) # E:\Python\Ptest # 一个特殊的标记“..”,它表示当前目录的上一级目录 # 文件操作 # 一般来说,文件的操作分以下三个步 # (1) 打开文件 # (2) 读文件或者写文件 # (3) 关闭文件 # 文件的打开与关闭 # 1.文件的打开 # 大多数文件都是长期保存在外部存储器的,需要操作时必须先调入内存,才能由 CPU进行处理 # 而“打开”操作就是将文件从外部存储器调入内存的过程,这个过程需要使用 # Python 语言内置的 open 命令,并生成一个 File 对象 # 具体的语法格式如下: # file对象名 = open(文件路径字符串,模式字符) # 其中,文件路径字符串可以采用绝对路径,也可以采用相对路径 # 打开文件的模式字符用于指定打开文件的类型和操作文件的方式 # 打开文件的模式字符: 'r','r+','w','w+','a','a+','rb','rb+','wb','wb+','ab','ab+' # 2.文件的关闭 # 执行 open 命令打开文件后,这个文件就被 Python 程序占用并被调入内存。其后所有的读写操作都发生在内存 # 与此同时,其他任何应用程序都不能操作该文件 # 当读写操作结束后,必须将文件从内存保存回外存 # 这样做一方面为了将内存中文的变化同步至外存,以便长期保存; # 另一方面是为了释放 Python 程序对文件的占用,让其他应用程序能够操作文件 # 这个将文件保存回外存的操作是由文件对象的close()方法实现的 # 具体的语法格式如下 # file 对象.close() # 下面根据图7-1对应的目录结构尝试一些文件的打开操作。 # 下列代码中首先将当前工作目录设置为“python”;然后尝试用读模式打开当前目录下名 # 为“mydata.txt”的文本文件,如图 7-3 所示,该文件不存在,因此系统报错;再次尝试用写 # 模式扩开这个不存在的文件时,命令顺利执行,如图7-4 所示,系统会在“python”目录下新 # 建一个大小为“0字节”名称为“mydata.txt”的文件,并将其与文件对象 file进行关联 import os print(os.getcwd()) # E:\Python\Ptest '''filePractice = open('mydate.txt','r')''' # 因为当前 E:\Python\Ptest 下没有mydate.txt这个文本文件,用 只读模式打开 会报错 # Traceback (most recent call last): # F