python自动化运维-文件读写-缓存文件写入失败

python自动化运维-文件读写-缓存文件写入失败

Python内置了读写文件的函数,用file对象表示文件描述符。以下是file对象的常用方法:

1.open(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None),打开一个文件创建file对象。参数:
name:文件路径。
mode:打开文件的模式,默认为rt即只读文本,下表是所有可取值:

字符描述
'r'只读(默认)
'w'只写
'x'独占方式创建, 如果文件已存在则失败
'a'追加,如果文件存在则追加,不存在则创建
'b'二进制模式
't'文本模式(默认)
'+'打开一个文件用于更新,即读写
常用组合举例:w+文本读写不存在则创建,a+追加读写,rb+二进制读写;

buffering:缓冲区,等于0不会有缓存。等于1访问文件时会缓存行。如果设为大于1的整数,表示缓冲区的大小。如果取负值,缓冲区的大小则为系统默认。
encoding:文件字符编码,读取文本时用。
其他参数少用暂不介绍。
fileObj=open('/usr/a.txt','r+',encoding='gbk')
print(fileObj.name)
以上代码为以gbk编码读写一个文本文件,打印出文件名

2.file.close(),关闭文件对象。文件使用过后是必须要关闭的,否则你懂的。I/O流的读写可能IOError异常发生,为了保证关闭操作必须执行,通用会try ... finally实现:

try:
f = open('/path/file', 'r')

print(f.read())

finally:

if f:

f.close()

为了避免这样繁琐的操作,Python引入了with语句来自动帮我们调用close()方法

with open('/path/file', 'r') as f:

print(f.read())

3.file.read(size),从文件读取指定的字节数,如果未给定或为负则读取所有,文本模式返回的是文本,二进制模式返回二进制对象。

4.file.readline(),读取一行数据,以'\n'换行符为一行。我们也可以按行来迭代文件对象:

for line in f:

print(line, end='')

5.file.readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。

如果碰到结束符 EOF 则返回空字符串。也可用list(file)。

6.file.write(string|bytearray) ,方法用于向文件中写入指定字符串或二进制。注意:在文件关闭前或缓冲区刷新前,内容存储在缓冲区中并示最终写入文件。要写入其他数据类型需要转换到字符串或二进制才能写入。

7.file.tell(),返回文件指针当前位置。

8.file.seek(offset[, whence]),移动文件读取指针到指定位置。offset开始的偏移量,也就是代表需要移动偏移的字节数。whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

9.file.flush(),刷新文件内部缓冲,内部缓冲区的数据立刻写入文件。

好了,前面运维系列文章把python的基础语法,常用模块和文件操作都介绍过了,对于运维工作来说基本上已经可以干活了,后面的文章开始实践脚本。

推荐阅读