目录
文件管理
1. 文件对象
2.标准文件
3. 文件系统
4. os.path 模块中的路径名访问函数
简介:内建函数 open()提供了初始化输入/输出(I/O)操作的通用接口. open() 内建函数成功打开文件后时候会返回一个file对象, 否则引发异常错误。
语法:
file_object = open(file_name, access_mode='r', buffering=-1)
其中file_name 是包含要打开的文件名字的字符串, 它可以是相对路径或者绝对路径.
可选变量access_mode 也是一个字符串, 代表文件打开的模式. 通常, 文件使用模式 'r', 'w', 或是 'a'模式来打开, 分别代表读取, 写入和追加. 还有个 'U' 模式, 代表通用换行符支持。可以相互组合。
+ |
读+写 |
r |
读取,(文件已存在) |
w |
写入(先清空,后创建), |
a |
追加(追加到末尾) |
u |
通用换行符支持(文件已存在) |
b |
二进制模式访(Unix系统下可省,为了兼容,加上) |
可选参数 buffering 用于指示访问文件所采用的缓冲方式. 其中 0 表示不缓冲, 1表示只缓冲一行数据, 任何其它大于 1 的值代表使用给定值作为缓冲区大小。
该文件对象的后续操作都将通过这个"句柄"进行,文件方法可以分为四类: 输入, 输出, 文件内移动。
文件对象方法 |
操作 |
|
文件对象方法 |
操作 |
|
file.close() |
关闭文件。 |
|
file.flush() |
刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。 |
|
file.fileno() |
返回一个整型的文件描述符(file descriptor FD 整型), 可用os模块的read方法等一些底层操作上。 |
|
file.isatty() |
判断 file 是否是一个类 tty 设备,如果文件连接到一个终端设备返回 True,否则返回 False。 |
|
file.next() |
返回文件下一行。 |
|
file.read((size=-1]) |
从文件读取指定的字节数,如果未给定或为负则读取所有。 |
|
file.readline([size]) |
读取整行,包括行结束符 "\n" 字符。 |
|
file.readlines([sizeint]) |
读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。缓冲器只能为4K 的倍数, sizhint 为15k,则最后返回的可能是16k |
|
file.seek(offset[,whence]) |
设置文件当前位置在文件中移动文件指针, 从 whence ( 0 代表文件其始, 1 代表当前位置, 2 代表文件末尾)偏移 off 字节。 |
|
file.tell() |
返回文件当前位置。 |
|
file.truncate([size]) |
从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 Widnows 系统下的换行代表2个字符大小。 |
|
file.write(str) |
将字符串写入文件,返回的是写入的字符长度。 |
|
file.writelines(sequence) |
向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。 |
程序一执行, 那么你就可以访问三个标准文件. 它们分别是标准输入(一般是键盘), 标准输出(到显示器的缓冲输出)和标准错误(到屏幕的非缓冲输出). (这里所说的"缓冲"和"非缓冲"是指 open() 函数的第三个参数.)。stdin , stdout 和 stderr。
对文件系统的访问大多通过 Python 的 os 模块实现. 除了对进程和进程运行环境进行管理外, os 模块还负责处理大部分的文件系统操作,功能包括删除/重命名文件, 遍历目录树, 以及管理文件访问权限等.
os模块:
处理对象 |
函数 |
描述 |
|||
文件处理 |
|
|
|||
|
mkfifo()/mknod()a |
创建命名管道/创建文件系统节点 |
|||
|
remove()/unlink() |
Delete |
|||
|
file |
删除文件 |
|||
|
rename()/renames()b |
重命名 |
|||
|
*statc() |
返回文件信息 |
|||
|
symlink() |
创建符号链接 |
|||
|
utime() |
更新时间戳 |
|||
|
tmpfile() |
创建并打开('w+b')一个新的临时文件 |
|||
|
walk()a |
生成一个目录树下的所有文件名 |
|||
目录/文件夹 |
|
|
|||
|
chdir()/fchdir()a |
改变当前工作目录/通过一个文件描述符改变当前工作目录 |
|||
|
chroot()d |
改变当前进程的根目录 |
|||
|
listdir() |
列出指定目录的文件 |
|||
|
getcwd()/getcwdu()a |
返回当前工作目录/功能相同, 但返回一个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设备号创建一个原始设备号 |
|
||
|
major()a /minor()a |
从原始设备号获得 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() |
两个路径名是否指向同个文件 |
参考:
[1]《Python核心编程第二版》
[2] 菜鸡教程