open() 的基本语法是:
file_object = open(file_name, access_mode='r',buffering=-1)
access_mode,'r','w','a','U'分别代表读取, 写入和追加,通用换行符支持
使用 'r' 或 'U' 模式打开的文件必须是已经存在的
文件模式 操作
r 以读方式打开
Edit By Vheavens
Edit By Vheavens
rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278)
w 以写方式打开 (必要时清空)
a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+ 以读写模式打开
w+ 以读写模式打开 (参见 w )
a+ 以读写模式打开 (参见 a )
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w )
ab 以二进制追加模式打开 (参见 a )
rb+ 以二进制读写模式打开 (参见 r+ )
wb+ 以二进制读写模式打开 (参见 w+ )
ab+ 以二进制读写模式打开 (参见 a+ )
a. Python 2.3 中新增
readlines() 方法并不像其它两个输入方法一样返回一个字符串. 它会读取所有(剩余的)行然
后把它们作为一个字符串列表返回.
os 模块属性 描述
linesep 用于在文件中分隔行的字符串
sep 用来分隔文件路径名的字符串
pathsep 用于分隔文件路径的字符串
curdir 当前工作目录的字符串名称
pardir (当前工作目录的)父目录字符串名称
不管你使用的是什么平台, 只要你导入了 os 模块, 这些变量自动会被设置为正确的值, 减少
了你的麻烦.
文件对象的内建方法 操作
file.close() 关闭文件
file.fileno() 返回文件的描述符(file descriptor ,FD, 整数值)
file.flush() 刷新文件的内部缓冲区
file.isatty() 判断 file 是否是一个类 tty 设备
file.nexta() 返回文件的下一行(类似于file.readline() ), 或在没有其它行时
引发 StopIteration 异常
file.read(size=-1) 从文件读取 size 个字节, 当未给定 size 或给定负值的时候,读取剩余的所有字节, 然后作为字符串返回
file.readintob(buf, size) 从文件读取 size 个字节到 buf 缓冲器(已不支持)
file.readline(size=-1) 从文件中读取并返回一行(包括行结束符), 或返回最大 size
file.readlines(sizhint=0) 读取文件的所有行并作为一个列表返回(包含所有的行结束符); 如果给定sizhint 且大于 0 , 那么将返回总和大约为
sizhint 字节的行(大小由缓冲器容量的下一个值决定)( 比如说缓冲器的大小只能为4K 的倍数,如果sizhint为15k,则最后返回的可能是16k———译者按)
file.xreadlinesc() 用于迭代, 可以替换 readlines() 的一个更高效的方法
file.seek(off, whence=0) 在文件中移动文件指针, 从 whence ( 0 代表文件其始, 1代表当前位置, 2 代表文件末尾)偏移 off 字节
file.tell() 返回当前在文件中的位置
file.truncate(size=file.tell()) 截取文件到最大 size 字节,默认为当前文件位置
file.write(str) 向文件写入字符串
file.writelines(seq) 向文件写入字符串序列 seq ; seq 应该是一个返回字符串的可迭代对象; 在2.2 前, 它只是字符串的列表
文件的内建属性:
文件对象的属性 描述
file.closed True 表示文件已经被关闭, 否则为 False
file.encodinga 文件所使用的编码 - 当 Unicode 字符串被写入数据时, 它们将自动使用file.encoding 转换为字节字符串; 若file.encoding 为 None 时使用系统默认编码
file.mode 文件打开时使用的访问模式
file.name 文件名
file.newlinesa 未读取到行分隔符时为 None , 只有一种行分隔符时为一个字符串,当文件有多种类型的行结束符时,则为一个包含所有当前所遇到的行结束符的列表
file.softspace 为0 表示在输出一数据后,要加上一个空格符,1表示不加。这个属性一般程序员用不着,由程序内部使用。
sys 模块通过 sys.argv 属性提供了对命令行参数的访问
命令行参数是调用某个程序时除程序以为的其他参数,比如在文本的环境下执行程序就要在cmd下输入程序名和命令行参数。大多 IDE环境都提供一个用来输入"命令行参数"的窗口; 这些参数最后会像命令行上执行那样被传递给程序.
sys.argv 是命令行参数的列表
len(sys.argv) 是命令行参数的个数(也就是 argc)
sys.argv[0]永远是文件名。
文件系统
表9.5 os 模块的文件/目录访问函数
函数 描述
文件处理
mkfifo()/mknod() 创建命名管道/创建文件系统节点
remove()/unlink() Delete file 删除文件
rename()/renames() 重命名文件
*statc() 返回文件信息
symlink() 创建符号链接
utime() 更新时间戳
tmpfile() 创建并打开('w+b')一个新的临时文件
walk()生成一个目录树下的所有文件名
目录/文件夹
chdir()/fchdir()改变当前工作目录/通过一个文件描述符改变当前工作目录
chroot()d 改变当前进程的根目录
listdir() 列出指定目录的文件
getcwd()/getcwdu() 返回当前工作目录/功能相同, 但返回一个 Unicode 对象
mkdir()/makedirs() 创建目录/创建多层目录
rmdir()/removedirs() 删除目录/删除多层目录
访问/权限
access() 检验权限模式
chmod() 改变权限模式
chown()/lchown()a 改变 owner 和 group ID/功能相同, 但不会跟踪链接
umask() 设置默认权限模式
文件描述符操作
open() 底层的操作系统 open (对于文件, 使用标准的内建 open() 函数)
read()/write() 根据文件描述符读取/写入数据
dup()/dup2() 复制文件描述符号/功能相同, 但是是复制到另一个文件描述符
设备号
makedev()a 从 major 和 minor 设备号创建一个原始设备号
Edit By Vheavens
Edit By Vheavens
major() /minor()a从原始设备号获得 major/minor 设备号
表 9.6 os.path 模块中的路径名访问函数
函数 描述
分隔
basename() 去掉目录路径, 返回文件名
dirname() 去掉文件名, 返回目录路径
join() 将分离的各部分组合成一个路径名
split() 返回 (dirname(), basename()) 元组
splitdrive() 返回 (drivename, pathname) 元组
splitext() 返回 (filename, extension) 元组信息
getatime() 返回最近访问时间
getctime() 返回文件创建时间
getmtime() 返回最近文件修改时间
getsize() 返回文件大小(以字节为单位)查询
exists() 指定路径(文件或目录)是否存在
isabs() 指定路径是否为绝对路径
isdir() 指定路径是否存在且为一个目录
isfile() 指定路径是否存在且为一个文件
islink() 指定路径是否存在且为一个符号链接
ismount() 指定路径是否存在且为一个挂载点
samefile() 两个路径名是否指向同个文件
pickle 和 marshal 模块
pickle 模块中的两个主要函数是 dump() 和 load()。dump()函数接受一个文件句柄和一个数据对象作为参数, 把数据对象以特定格式保存到给定文件里. 当我们使用 load()函数从文件中取出已保存的对象时, pickle 知道如何恢复这些对象到它们本来的格式.