温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python自动化运维开发----基础(十一)文件操作

发布时间:2020-08-03 23:54:14 来源:网络 阅读:525 作者:Demon宽 栏目:编程语言

1.文件的路径

(1) 相对路径:文件所在路径

(2) 绝对路径:从根路径起的目录

2.文件的类型

(1)文本文件  :   可以直接编写的文件

(2)二进制文件:  安装包 ,图片

3.mode相关

(1)关于文件操作的mode

mode    打开文件的方式

r            读

w           写

x           创建并写

a           追加

r+         读写

w+        写读

x+         创建并写读

a+         追加读

(2)关于文件的mode

mode     文本类型

t             文本(默认)

b            二进制

4.文件打开、读取、关闭的过程

文件打开

open('path', 'mode')

>>> handler = open('tpl.xml', 'rt')

文件读取

>>> handler.read() '<mysql>\n    <host>{HOST}</host>\n    <port>{PORT}</port>\n    <user>{USER}</user>\n</mysql>\n'

文件关闭

>>> handler.close()

5.读文件

handler.read()  读取所有的内容

handler.read(size)  读取文件size个字节内容

handler.readline()  读取文件一行

handler.readlines()  读取文件所有行

判断文件是否读完的依据是判断最后一行是否为空

文件的可遍历性

>>> handler = open('tpl.xml', 'rt') >>> for lines in handler: ...     print(lines) ...  <mysql>     <host>{HOST}</host>     <port>{PORT}</port>     <user>{USER}</user> </mysql> >>> handler.close()

对于二进制文件的读方式 只有 read 和 read(size)

read方式读取

>>> handler = open('1.py','rb') >>> handler.read() b'#!/usr/bin/python\n\na = 1\nb = 2\nc = [1,2]\n\ndef test():\n    a = 4 \n    b = 5\n    c = []\n    c.append(1)\n    print(a,b,c)\n\ntest()\nprint(a,b,c)\n' >>> handler.close()

read(size)

>>> handler = open('1.py','rb') >>> SIZE = 10 >>> while True: ...     b_read = handler.read(SIZE) ...     if b_read == b'': ...         break ...     print(b_read) ...  b'#!/usr/bin' b'/python\n\na' b' = 1\nb = 2' b'\nc = [1,2]' b'\n\ndef test' b'():\n    a ' b'= 4 \n    b' b' = 5\n    c' b' = []\n    ' b'c.append(1' b')\n    prin' b't(a,b,c)\n\n' b'test()\npri' b'nt(a,b,c)\n'

6.字符串和二进制字符串的转换

字符串转换成二进制字符串

>>> "abc".encode() b'abc'

二进制字符串转换成字符串

>>> b'abc'.decode() 'abc'

7.写文件

写文件 (文件不存在的时候创建)

>>> handler = open('2.txt', 'wt') >>> handler.write('123') 3 >>> handler.close()

当文件存在的时候就会清空原来的文件,覆盖之前的文件

>>> handler = open('2.txt', 'wt') >>> handler.write('111') 3 >>> handler.flush() >>> handler.close()

8.小练习

把一个字典列表中的value 拿出来写入到一个文件里

#!/usr/bin/python students = [     {'id' : 1, 'name' : 'likuan', 'sex' : 'm', 'age' : 25},     {'id' : 2, 'name' : 'lizhi', 'sex' : 'm', 'age' : 22}, ] path = 'student.txt' handler = open(path, 'wt') for student in students:     print(student)     print('{0},{1},{2},{3}'.format(student['id'],student['name'],student['sex'],student['age']))     handler.write('{0},{1},{2},{3}'.format(student['id'],student['name'],student['sex'],student['age']))     handler.write('\n') handler.close()

从写入的文件在在转换成一个字典列表

#!/usr/bin/python path = 'student.txt' students = [] handler = open(path, 'rt') for line in handler:     line = line.strip()     id, name, sex, age = line.split(',')     students.append({'id':id,'name': name,'sex': sex,'age': age}) handler.close() print(students)

9.一些区别

x 和 w 的区别    w在文件存在会清空 文件的内容  x 不会清空文件的内容

>>> handler = open('2.txt', 'xt') Traceback (most recent call last):   File "<stdin>", line 1, in <module> FileExistsError: [Errno 17] File exists: '2.txt'

a 是相当于追加

>>> handler = open('2.txt', 'at') >>> handler.write('test') 4 >>> handler.close()

文件指针 tell()查看文件指针的位置,seek() 重置文件指针的位置

>>> handler = open('2.txt', 'rt') >>> handler.read() '111test' >>> handler.tell() 7 >>> handler.read() '' >>> handler.seek(0,0) 0 >>> handler.read()    '111test'

小总结  关于文件mode

r+ 文件必须存在

w+ 文件如果存在清空

x+ 文件必须不存在

a+ 只往文件的末尾写

10.小练习2定义一个模板文件

例如模板文件中的配置

 <mysql>

    <host>{HOST}</host>

    <port>{PORT}</port>

    <user>{USER}</user>

</mysql>

通过format传值

#!/usr/bin/python   tpl_file = 'tpl.xml' conf_file = 'mysql.xml' tpl = open(tpl_file).read() open(conf_file, 'wt').write(tpl.format(HOST='127.0.0.1',PORT='80',USER='kk'))

结果如下:

[root@Devop-python 19-1-20]# cat mysql.xml <mysql>     <host>127.0.0.1</host>     <port>80</port>     <user>kk</user> </mysql>
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI