Python的文件。
通过内建函数open() 和file()打开一个文件。这两个方法是等价的,file()方法提供了工厂函数形式的打开文件的方法。语法如下:
file_object= open(file_name, access_mode='r', buffering=-1)
文件模式 操作
r 以读方式打开
rU 或Ua 以读方式打开, 同时提供通用换行符支持 (PEP278)
w 以写方式打开 (必要时清空)
a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+ 以读写模式打开
w+ 以读写模式打开 (参见 w)
a+ 以读写模式打开 (参见 a)
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w)
ab 以二进制追加模式打开 (参见 a)
rb+ 以二进制读写模式打开 (参见 r+)
wb+ 以二进制读写模式打开 (参见 w+)
ab+ 以二进制读写模式打开 (参见 a+ )
文件对象的内建方法:
文件对象的内建方法列表
文件对象的方法 操作
file.close() 关闭文件
file.fileno() 返回文件的描述符(filedescriptor ,FD, 整数值)
file.flush() 刷新文件的内部缓冲区
file.isatty() 判断 file 是否是一个类 tty 设备
file.next () 返回文件的下一行(类似于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.xreadlines () 用于迭代, 可以替换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 应该是一个返回字符串的
可迭代对象;
文件对象的属性
文件对象的属性 描述
file.closed True 表示文件已经被关闭, 否则为 False
file.encodinga 文件所使用的编码 - 当Unicode 字符串被写入数据时, 它们将自动使
用 file.encoding 转换为字节字符串; 若file.encoding 为 None 时使
用系统默认编码
file.mode 文件打开时使用的访问模式
file.name 文件名
file.newlines 未读取到行分隔符时为 None , 只有一种行分隔符时为一个字符串, 当
文件有多种类型的行结束符时,则为一个包含所有当前所遇到的行结束
符的列表
file.softspace 为 0 表示在输出一数据后,要加上一个空格符,1 表示不加。这个属性
sys模块:
标准输出文件,标准输入文件,标准错误文件。
可以通过sys模块来访问这三个标准文件,分别是:sys.stdout,sys.stdin, sys.stderr.
PRint 语句一般是输出到sys.stdout。
raw_input()是从sys.stdin获取输入。
命令行参数:
python程序通过命令行执行时,可以输入参数。在python程序中通过sys.argv属性获取这些参数。 sys.argv返回命令行组成的字符串序列,每个字符串以空格为分隔符。程序名称为第一个,在序列中下标为0。后续参数以此类推。
os、os.path模块
os模块提供了操作系统级文件操作方法。比如创建目录,修改文件属性,删除文件,列出文件列表。详细如下:
函数 描述
文件处理
mkfifo()/mknod() 创建命名管道/创建文件系统节点
remove()/unlink() Delete file 删除文件
rename()/renames() 重命名文件
*statc () 返回文件信息
symlink() 创建符号链接
utime() 更新时间戳
tmpfile() 创建并打开('w+b')一个新的临时文件
walk() 生成一个目录树下的所有文件名
目录/文件夹
chdir()/fchdir()a 改变当前工作目录/通过一个文件描述符改变当前工作目录
chroot() 改变当前进程的根目录
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() 从 major 和 minor设备号创建一个原始设备号
major() /minor() 从原始设备号获得 major/minor 设备号
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() 两个路径名是否指向同个文件
Python中数据的永久存储
涉及模块,marshal, pickle/cpickle, shelve, DBM风格模块
marshal:可以将简单对象序列化,如数字,序列,映射和代码对象。
pickle:除简单对象外,还可以处理递归对象,多次引用的对象以及用户定义对象。
dbm类模块:只能处理字符串的序列化。
shelve:可以将python对象和字符串。shelve模块使用 anydbm 模块寻找
合适的 DBM 模块, 然后使用cPickle 来完成对储存转换过程. shelve 模块允许对数据库文件进行并发的读访问, 但不允许共享读/写访问.
问题1:shevle模块是否需要同时安装pickle和dbm模块?
文件的其他相关模块:
模块 内容
base64 提供二进制字符串和文本字符串间的编码/解码操作
binascii 提供二进制和 ASCII编码的二进制字符串间的编码/解码操作
bz2 访问 BZ2 格式的压缩文件
csv 访问 csv 文件(逗号分隔文件)
filecmp 用于比较目录和文件
fileinput 提供多个文本文件的行迭代器
getopt/optparse 提供了命令行参数的解析/处理
glob/fnmatch 提供 Unix 样式的通配符匹配的功能
gzip/zlib 读写 GNU zip( gzip) 文件(压缩需要 zlib 模块)
shutil 提供高级文件访问功能
c/StringIO 对字符串对象提供类文件接口
tarfile 读写 TAR 归档文件, 支持压缩文件
tempfile 创建一个临时文件(名)
uu 格式的编码和解码
zipfile 用于读取 ZIP 归档文件的工具
新闻热点
疑难解答