Python自动化运维开发----基础(十一)文件操作-创新互联
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() '\n \n'{HOST} \n{PORT} \n{USER} \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) ...>>> handler.close() {HOST} {PORT} {USER}
对于二进制文件的读方式 只有 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 "", line 1, in 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定义一个模板文件
例如模板文件中的配置
通过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.xml127.0.0.1 80 kk
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
标题名称:Python自动化运维开发----基础(十一)文件操作-创新互联
分享网址:http://cdiso.cn/article/epjej.html