第一次接触 Python 语言的 IO API 时,是惊艳的。相比较其它语言所提供的 IO 流 API 。
无论是站在使用者的角度还是站在底层设计者的角度,都可以称得上无与伦比。
很多人在学习 JAVA 语言中的 IO 流 API 时,几乎是崩溃的。其 API 太多、API 之间的关系过于复杂。类的层次结构需要花费很多时间才能搞明白。API 设计者未免有炫技之嫌。
而 Python 的 IO 流操作,才真正应了哪句话:人生苦短,我学 python 。
以 open( ) 函数 为操作起点,便捷、快速地完成所有操作,绝对算得上轻量级设计的典范,且高度诠释了“高内聚”概念。使用起来颇有“四两拨千金”的轻松。
通过了解 open( ) 函数的参数设计,其开闭设计思想可谓使用到了极致。
2. open( ) 函数 2.1 函数原型 def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True): …… 2.2 函数功能打开一个指定位置的文件并返回 IO 流对象。
2.3 函数参数Tip: open( ) 函数的参数看起来虽然有点多,在使用时,很多参数都可以采用默认设置,它会提供最优的工作方案。
file 参数: 指定文件位置。可以是一个字符串描述的文件路径,也可以是一个文件描述符(int 类型)。
Tip: 当使用字符串描述时,可以是绝对路径,也可以是相对路径。
绝对路径: 以绝对位置作为路径的起点。 不同的操作系统中会有差异性,windows 以逻辑盘符为绝对起点,Liunx 以 "http://www.likecs.com/" 根目录为绝对起点。
file=open("d:/guoke.txt")Tip: 上述代码运行时,需要保证在系统的 d 盘下有一个名字 "guoke.txt" 的文件。
相对路径: 所谓相对路径指以某一个已经存在的路径(或叫参照目录、当前目录)做起点。 默认情况下,相对路径以当前项目目录作为参照目录。可以使用 os 模块 中的 getcwd( ) 方法获取当前参照目录的信息。
import os print(os.getcwd()) # 本代码的测试项目放在 d:\myc 下;项目名称:filedmeo # 输出结果 # D:\myc\filedmeo如下代码需要保证在项目目录中存在 " guoke.txt "
file = open("guoke.txt") # 执行时, python 解释器会自动拼接一个完整路径 D:\myc\filedmeo\guoke.txt参照目录 可以是不固定的,而是可变的。
改变相对路径的参考目录:
import os # 把 d 盘作为当前目录 os.chdir("d:/") print(os.getcwd()) file = open("guoke.txt") # python 解释器会从 d 盘根目录下查找 guoke.txt 文件描述符: 使用 open( ) 函数打开一个文件后,python 解释器系统会为此文件指定一个唯一的数字标识符。可以用此描述符作为 open( ) 参数。
file = open("guo_ke.txt") # fileno() 获取文件的描述符 file1 = open(file.fileno())Tip: 用户文件的描述符从 3 开始。0,1,2 是系统保留文件描述符。
0:表示标准输入(键盘)设备描述符。
file = open(0) print("请输入一个数字:") res = file.readline() print("回显:", res) ''' 输出结果 请输入一个数字: 88 回显: 88 '''1:表示标准输出设备(显示器)描述符。
file = open(1, "w") file.write("you are welcome!") #类似于 print("you are welcome!") 的功能2:表示标准错误输出设备(显示器)描述符。
file = open(2, "w") file.write("you are welcome!") #输出文字会以红色亮显
mode: 文件操作模式。默认为 "r" ,表示只读模式。
模式关键字 描述 异常'r' 以只读方式打开文件 文件不存时,会抛出 FileNotFoundError 异常
‘r+’ 以可读、可写方式打开文件 文件不存时,会抛出 FileNotFoundError 异常
‘w’ 以可写方式打开文件 文件不存在时,创建一个字节 0 的空文件
‘w+’ 以可写、可读方式打开文件(清空原内容) 文件不存在时,创建一个字节 0 的空文件
‘a’ 以追加方式打开文件 文件不存在时,创建一个字节 0 的空文件
‘a+’ 以可追加、可读方式打开文件 文件不存在时,创建一个字节 0 的空文件
‘t’ 以文本文件格式打开文件 默认
‘b’ 以二进制格式打开文件
‘x’ 创建空文件并且可写 文件存在时,抛出 FileExistsError 异常