Python之路【第二篇】:Python基础(二)

windows的换行符:\n\r

linux的换行符:\n

 

文件的数据处理:

r 以只读模式打开文件(默认模式)
w 以只写模式打开文件
a 以追加模式打开文件


r+b 以读写模式打开文件(以读/写方式打开一个已存在的文件)
w+b 以写读模式打开文件(以读/写方式建立一个新的文本文件,如果文件存在,w+会自动把已有文件的内容清空。)
a+b 以追加及读模式打开文件

r、r+把字符指针放到开头

b:以二进制形式打开文件,解决了windows和linux换行符不一致的问题

 

f = file('/etc/passwd.bak','r') 等效于 f = file('/etc/passwd.bak')

f = file('/etc/passwd.bak','r')
for line in f.readlines():
  line = line.strip('\n').split(':')
  print line

f.readlines生成的是一个列表,f.read

f = file('/etc/passwd.bak','r')
for line in f.readlines():
  line = line.strip('\n').split(':')[0]
  print line

 

常见文件方法:

readlines、xreadlines、next、f.read、close、closed、seek、tell、write、writelines、mode、name 、flush、closed、truncate  

 

>>> f = file('/etc/passwd.bak','r')
>>> f.name
'/etc/passwd.bak'

 read生成的是一个字符串,readlines生成的是一个列表

>>> f.read()
'root:x:0:0:root:/root:/bin/bash\nbin:x:1:1:bin:/bin:/sbin/nologin\ndaemon:x:2:2:daemon:/sbin:/sbin/nologin\nadm:x:3:4:adm:/var/adm:/sbin/nologin\nlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\nsync:x:5:0:sync:/sbin:/bin/sync\nshutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\nhalt:x:7:0:halt:/sbin:/sbin/halt\nmail:x:8:12:mail:/var/spool/mail:/sbin/nologin\nuucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin\noperator:x:11:0:operator:/root:/sbin/nologin\ngames:x:12:100:games:/usr/games:/sbin/nologin\ngopher:x:13:30:gopher:/var/gopher:/sbin/nologin\nftp:x:14:50:FTP User:/var/ftp:/sbin/nologin\nnobody:x:99:99:Nobody:/:/sbin/nologin\ndbus:x:81:81:System message bus:/:/sbin/nologin\nvcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin\nsaslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin\npostfix:x:89:89::/var/spool/postfix:/sbin/nologin\nsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin\n'

 seek:改变文件内字符指针的位置,tell告诉文件内字符指针的位置

>>> f.seek(0)
>>> f.tell()
0L
>>> f.seek(300)
>>> f.tell() 300L
>>> f.seek(61)
>>> f.readline()
'gin\n'

 检查文件是否关闭

>>> f.closed
False

 truncate:从文件开头开始截取n个字节

>>> f = file('/etc/passwd.bak','r+')
>>> f.truncate(5)
>>> f.close()
[root@hy tmp]# more /etc/passwd.bak
root:

 xreadlines:写进内存一行,读一行,使用大文件,readlines将文件全部写入内存然后读文件

 

字符串处理

 

find  查找字符串
index   字符串索引值
capitalize   首字母大写
lower  转小写
upper  转大写
swapcase 大小写转换
split  string转list,按指定符号分割
join   list转string,按指定符号连接
len  字符串长度
cmp  比较首字符对应的ASCII大小,数字直接比较大小
max   ASCII最大的字符
min   ASCII最小的字符
startwith 以某些字符开头


>>> msg = "what's your company's name?"
>>> msg.find('name')
22

>>> msg.index('name')
22


>>> msg.capitalize()
"What's your company's name?"

>>> msg.split()
["what's", 'your', "company's", 'name?']
>>> msg.split("'")
['what', 's your company', 's name?']

 


>>> msg_list = msg.split("'")
>>> msg_list
['what', 's your company', 's name?']
>>> '|'.join(msg_list)
'what|s your company|s name?'


 >>> len(msg)
27

 

>>> x,y=1,2
>>> cmp(x,y)
-1
>>> cmp(y,x)
1
>>> x,y='A2','a1'
>>> cmp(x,y)
-1

 >>> x='12aA'
>>> min(x)
'1'
>>> max(x)
'a'

 

>>> x.startswith('1')
True
>>> x.startswith('2')
False

 list VS dict

dict:查找和插入速度快,但耗内存,无序

list:查找和插入的时间随着元素的增加而增加,浪费内存少,有序

 

 set:无序,元素不重复,作用:关系测试;去重

>>> x={1,2,3,4}
>>> y={3,4,5,6}
>>> x&y
set([3, 4])
>>> x|y
set([1, 2, 3, 4, 5, 6])
>>> x^y
set([1, 2, 5, 6])
>>> x-y
set([1, 2])

>>> z={1,2,4}
>>> z.issubset(x)
True
>>> x.issuperset(z)
True




 

 

 

 

 

 

 


      

        

 

posted @ 2016-01-14 13:50  沐风先生  阅读(310)  评论(0编辑  收藏  举报