read()
readline()
readlines()
write()
writelines()
核心笔记:
python并不会删除行结束符,这个操作留给了程序员,所以在Python中可以看到这样的代码:
f = open('myFile', 'r')
date = [line.strip() for line in f.readlines()]
f.close()
9.3.3文件内移动
seek(offset[, whence])
其中offset相对位置,whence是起始位置,0,1,2分别代表SEEK_SET,SEEK_CUR, SEEK_END。
text()方法返回文件指针在文件中的位置--相对于文件起始位置的字节数。
9.3.4文件迭代
只需直接使用 for eachline in f这样的方法来迭代文件的每一行。
9.3.5其他
fileno()方法返回对应的文件描述符(文件描述符的概念待以后接触到再展开)
flush()立即把内部缓冲区中的数据写入文件
isatty()判断一个文件是否是一个类tty
truncate()将文件截取到当前位置或者给定size的位置,单位是字节。
核心笔记不同系统下的行分隔符是不同的,所以Python的os模块提供了相关的属性,它们都是字符串
>>> os.sep '\' >>> os.linesep ' ' >>> os.pathsep ';' >>> os.curdir '.' >>> os.pardir '..' >>>
file.closed 显示文件是否关闭
file.encoding 显示文件所使用的编码
file.mode 访问文件的模式
file.name 访问文件名
file.newlines 以列表返回读到的换行符
python中有类似c的标准输入输出,他们放在sys中
sys.stdout sys.stderr sys.stderr
9.6命令行参数
我们还可以通过sys.argv属性提供对命令行参数的访问,不提供sys.argc而是使用len(sys.argv)
我们还有两个模块来处理命令行参数:getopt 和optparse
9.7文件系统
文件处理:
mkfifo()/mknod() 创建命名管道/创建文件系统节点
remove()/unlink() delete file 删除文件
rename()/ renames() 重命名文件
stat() 返回文件信息
symlink() 创建符号链接
utime() 更新时间戳
tmpfile() 创建并打开(“w+b”)一个新的临时文件
walk() 生成一个目录树下的所有文件名
目录/文件夹
chdir()/fchdir() 改变当前工作目录/通过一个文件描述符改变当前工作目录
chroot() 改变当前进程的根目录
listdir() 列出指定目录的文件
getcwd()/getcwdu() 返回当前工作目录/功能相同,但返回一个unicode对象
mkdir()/makedirs() 创建目录/创建多层目录
rmdir()/removedirs() 删除目录/删除多层目录
访问/权限
access() 检验权限模式
chmod() 改变权限模式
chown()/lchown() 改变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() 两个路径名是否指向同个文件
9.8文件执行
9.9永久存储模块
适用于需要重复输入数据,但是简单的磁盘文件不能满足需求,而使用关系型数据库又没必要的情况。
9.9.1 pickle和marshal模块
Python提供了许多可以实现最小化永久性储存的模块,把较复杂的对象转换成二进制数据,这样就可以把数据
保存起来或通过网络发送,然后再重新把数据集合恢复成原来的对象格式。这个过程也称之为数据的扁平化,数据的
序列化或数据的顺序化。
pickle,marshal都可以做到对Python对象进行储存转换,这些模块本身并没有提供“永久性储存”功能,因为它们没有
为对象提供名称空间,也没有提供对永久性储存对象的并发写入(concurrent write access)。它们只能储存转换
Python对象,为保存和传输提供方便。
功能上:marshal只能处理简单的对象,pickle可以处理递归对象。