python 的文件处理
待更
一、linux 用户权限
drwxr-xr-x
d:目录
rwx:当前用户的权限
r-x :所在用户组的权限
--x:外部用户访问权限
二、文件打开
open(name, mode, buf) :name 文件路径, mode 文件打开方式, 缓冲 buffering大小。注意模式:
r 以只读模式打开文件
w 以只写模式打开文件,且先把文件内容清空(truncate the file first)
a 以添加模式打开文件,写文件的时候总是写到文件末尾,用seek也无用。打开的文件也是不能读的
r+ 以读写模式打开文件,文件指针将会放在文件的开头。
w+ 和r+不同的是,它会truncate the file first
a+ 和r+不同的是,它只能写到文件末尾
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
三、文件读取方式
read([size])、readline([size])、readlines([size]):读取全部,读取一行,读取全部返回每一行组成的列表(小于缓冲大小 io.DEFAULT_BUFFER_SIZE)
for line in f 迭代遍历,不是一次性读取,而是通过调用 next方法读取。
四、文件写入方式
1. write(str)、writelines(sequence_of_strings):写多行到文件,参数是元组、列表或其他序列
2. 当数据量大于或等于写缓存时,写缓存同步到磁盘。或者主动调用 flush,也可以在写入完毕时,调用 close。
3. 写完一个文件须关闭
linux 系统中每个进程打开文件的个数是有限制的。如果打开文件到了系统限制,再打开文件就会失败。查看限制
4. 文件描述符
file1.fileno 使用低级文件接口,如 os.read() 会需要。
五、python 文件指针操作
seek(offset [,whence]):offset 偏移量,可以为负数; whence,偏移的相对位置。相对位置的三个参数:os.SEEK_SET os.SEEK_CUR os.SEEK_END
f.tell() 获取当前文件读取到的指针的位置
如: f.seek(0, os.SEEN_END) 从当前位置读取完整个文件
六、文件的属性和标准文件
1. 文件属性:file.fileno、file.mode、file.encoding、file.closed 文件是否关闭
2. 标准文件:sys.stdin 文件标准输入、sys.stdout 文件标准输出、 sys.stderr 文件标准错误
3. 标准文件的文件描述符:sys.stdin.fileno 0 sys.stdout.fileno 1
调用pirnt 时,实际上是调用 sys.stdout.write('1000') 输出到标准输出流
4. 命令行参数
# arg.py import sys if __name__ == '__main__': for arg in sys.argv: print(arg)
调用
$ python arg.py 0 1 2 3
输出
arg.py 0 1 2 3
七、OS 模块对文件和目录进行操作
1. io 操作
打开文件
os.open(filename, flag, [, mode]) 返回值为文件描述符(fd),flag 可以是:os.O_CREATE:创建文件 os.RD_ONLY:只读方式打开 os.WR_ONLY:只写方式打开 os.RDWR:读写方式打开
读取文件 os.read(fd, buffersize)、写入文件 os.write(fd, string)、文件的指针操作 os.lseek(fd, pos, how)、关闭文件 os.close(fd)
2.os 模块的常用方法
os.getcwd()
获取当前的路径os.listdir(path)
获取path路径下的全部文件和文件夹,就是显示全部的文件的作用os.mkdir(path)
创建一个文件夹os.rmdir(path)
删除一个文件夹os.remove(path)
删除一个文件os.rename(path1,path2)
将文件或者文件夹重命名,path1是原来件路径,path2是改变后的文件的路径名称os.makedirs(path)
循环创建文件夹,给出一个路径,连续的创建这个路径的全部文件夹,并不是创建文件os.removedirs(path)
循环删除文件夹 会删除整个路径的文件夹
os.path.abspath(path)
返回此文件的绝对路径os.path.exists(path)
判断文件或者文件夹是否存在os.path.basename(path)
返回绝对路径中的文件名os.path.normpath(path)
标准化文件路径,Windows下将双斜杠变成单斜杠os.path.commonprefix(list)
返回list中的相同的路径,只是多个路径相同的部分os.path.dirname(path)
返回文件所在上面一层的目录的名称,注意这里是所在紧接着一层的文件夹的名称os.path.split(path)
将路径分割成两个部分,返回的是一个元祖,第一个元素是前面的路径,第二个元素是文件的名称os.path.getatime(path)
返回文件的最后访问时间os.path.getmtime(path)
返回文件的最后修改时间os.path.getctime(path)
在unix的系统上返回的是文件最后修改的时间,在window的系统上返回的是文件的创建时间os.path.getsize(path)
返回文件的大小,以字节为单位os.path.isfile(path)
判断文件是否是文件os.path.isdir(path)
判断文件是否是文件夹os.path.join(path1,path2)
将两个文件的路径拼接在一起
八、配置文件的简单操作
准备文件 imooc.ini
[userinfo] name = zhangsan pwd = abc [study] python_base = 15 python_junior = 20 linux_base_ = 15
简单操作文件
# cfg_demo.py import configparser cfg = configparser.ConfigParser() cfg.read('imooc.txt') cfg.sections() for se in cfg.sections(): print(se) print(cfg.items(se)) cfg.set('userinfo', 'pwd', '1234567') cfg.remove_option('userinfo', 'email')
输出
userinfo [('name', 'zhangsan'), ('pwd', 'abc')] study [('python_base', '15'), ('python_junior', '20'), ('linux_base_', '15')]