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