用来处理系统中的文件内容
什么情况下需要处理文件?
§读取配置文件
§读取数据信息
§分析处理日志文件
§存入数据到文件
打开文件
打开文件方式一:
open('filename', ['mode'])
打开文件方式二:
file ('filename',['mode'])
mode:
a : append
w: write and replace old one
r: read , default mode
b: binary files
+:可读写模式(r+:即可读又可追加。w+:即可读又可覆写。a+:可读可追加)
如:
>>> open('/root/file.txt') <open file '/root/file.txt', mode 'r' at 0x7fa536269540> >>> open('/root/file.txt','w') <open file '/root/file.txt', mode 'w' at 0x7fa5362694b0> >>> file('/root/file.txt','a') <open file '/root/file.txt', mode 'a' at 0x7fa536269540>
读取一个文件(readline,readlines):
readline一行一行读文件,直到读完为止;
readlines从当前行读到文尾。
>>> a=open('/root/file.txt')
>>> a.readline()
'1:root:x:0:0:root:/root:/bin/bash '
>>> a.readline()
'2:bin:x:1:1:bin:/bin:/sbin/nologin '
>>> a.readlines()
['3:daemon:x:2:2:daemon:/sbin:/sbin/nologin ','4:adm:x:3:4:adm:/var/adm:/sbin/nologin ','5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin ']
>>> a.readline()
''
write() 写一行
>>> a=open('/root/file.txt','a')
>>> a.write('6:mysql:x:4:7:lp:/var/spool/lpd:/sbin/nologin
')
>>> a.close()
truncate(n) 文件内容只保留2个字符
>>> a=open('/root/file.txt','a')
>>> a.truncate(2)
>>> a.close()
seek(n) 光标回到文件开始处第n个字符,如seek(0)则回到开头
>>> a.seek(0)
>>> a.readline()
'root:x:0:0:root:/root:/bin/bash
'
小练习:完整打印一个文件
-
#!/usr/bin/python file=open('/root/file.txt','r') whileTrue: line = file.readline() if len(line)==0:break print line,
小练习:打印文件,并利用split(':'),实现类似awk的功能:
-
#!/usr/bin/python file=open('/root/file.txt','r') whileTrue: line = file.readline() if len(line)==0:break newline = line.split(':') print newline[0],'--',newline[1] [root@likun python_scripts]# python 8file.py root -- x bin -- x daemon -- x adm -- x lp -- x
小练习:
员工信息存在文件 emp.info 中,读取文件,列出文件中员工id,根据员工id输出该员工详细信息
-
[root@likun python_scripts]# cat emp.info 01 lk 18610314061 it 02 tom 13539393939 net 03 jack 15093949348 mark 04 james 13892387464 sale
-
#!/usr/bin/python file=open('/root/python_scripts/emp.info','r') emp_ids=[] whileTrue: line=file.readline() if len(line)==0:break line=line.split() emp_ids.append(line[0]) print emp_ids whileTrue: id = raw_input('input [id] to show info:') file.seek(0) whileTrue: line=file.readline() if len(line)==0: print 'We dont have id ',id break if id == line.split()[0]: print line file.seek(0) id = raw_input('input [id] to show info:')