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')]

 

posted on 2017-10-11 18:35  Lemo_wd  阅读(308)  评论(0)    收藏  举报

导航