python语法的一些问题1

open 文件操作

python strip()函数

.read()  、readline()与readlines()

split()函数

 

 

一、open 文件操作

open/文件操作
f=open('/tmp/hello','w')

#open(路径+文件名,读写模式)

#读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式

如:'rb','wb','r+b'等等

读写模式的类型有:

rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278)
w     以写方式打开,
a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+     以读写模式打开
w+     以读写模式打开 (参见 w )
a+     以读写模式打开 (参见 a )
rb     以二进制读模式打开
wb     以二进制写模式打开 (参见 w )
ab     以二进制追加模式打开 (参见 a )
rb+    以二进制读写模式打开 (参见 r+ )
wb+    以二进制读写模式打开 (参见 w+ )
ab+    以二进制读写模式打开 (参见 a+ )


注意:

1、使用'W',文件若存在,首先要清空,然后(重新)创建,

2、使用'a'模式 ,把所有要写入文件的数据都追加到文件的末尾,即使你使用了seek()指向文件的其他地方,如果文件不存在,将自动被创建。

 

f.read([size]) size未指定则返回整个文件,如果文件大小>2倍内存则有问题.f.read()读到文件尾时返回""(空字串)

file.readline() 返回一行

file.readline([size]) 返回包含size行的列表,size 未指定则返回全部行

for line in f: print line #通过迭代器访问

f.write("hello\n") #如果要写入字符串以外的数据,先将他转换为字符串.

f.tell() 返回一个整数,表示当前文件指针的位置(就是到文件头的比特数).

f.seek(偏移量,[起始位置])

用来移动文件指针

偏移量:单位:比特,可正可负

起始位置:0-文件头,默认值;1-当前位置;2-文件尾

f.close() 关闭文件

二、python strip()函数

声明:s为字符串,rm为要删除的字符序列

s.strip(rm)        删除s字符串中开头、结尾处,位于 rm删除序列的字符

s.lstrip(rm)       删除s字符串中开头处,位于 rm删除序列的字符

s.rstrip(rm)      删除s字符串中结尾处,位于 rm删除序列的字符

注意

1. 当rm为空时,默认删除空白符(包括'\n', '\r',  '\t',  ' ')

例如:

image

2.这里的rm删除序列是只要边(开头或结尾)上的字符在删除序列内,就删除掉。

image

三、.read()  、readline()与readlines()

.readline() 和 .readlines() 之间的差异是后者一次读取整个文件,象 .read() 一样。

.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for ... in ... 结构进行处理。另一方面,.readline() 每次只读取一行,通常比 .readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 .readline()。

通过readline输出,对于比较大的文件,这种占用内存比较小。  
#coding:utf-8  
  
f = open('poem.txt','r')  
result = list()  
for line in open('poem.txt'):  
    line = f.readline()  
    print line  
    result.append(line)  
print result  
f.close()                  
open('result-readline.txt', 'w').write('%s' % '\n'.join(result))

 

通过readline输出,对于比较大的文件,这种占用内存比较小。  
#coding:utf-8  
  
f = open('poem.txt','r')  
result = list()  
for line in open('poem.txt'):  
    line = f.readline()  
    print line  
    result.append(line)  
print result  
f.close()                  
open('result-readline.txt', 'w').write('%s' % '\n'.join(result))

 

四、split()函数

1、常用实例
 
>>> u = "www.doiido.com.cn"
  
#使用默认分隔符
>>> print u.split()
['www.doiido.com.cn']
  
#以"."为分隔符
>>> print u.split('.')
['www', 'doiido', 'com', 'cn']
  
#分割0次
>>> print u.split('.',0)
['www.doiido.com.cn']
  
#分割一次
>>> print u.split('.',1)
['www', 'doiido.com.cn']
  
#分割两次
>>> print u.split('.',2)
['www', 'doiido', 'com.cn']
  
#分割两次,并取序列为1的项
>>> print u.split('.',2)[1]
doiido
  
#分割最多次(实际与不加num参数相同)
>>> print u.split('.',-1)
['www', 'doiido', 'com', 'cn']
  
#分割两次,并把分割后的三个部分保存到三个文件
>>> u1,u2,u3 = u.split('.',2)
>>> print u1
www
>>> print u2
doiido
>>> print u3
com.cn
 


 2、去掉换行符
>>> c = '''say
hello
baby'''
  
>>> print c
say
hello
baby
  
>>> print c.split('\n')
['say', 'hello', 'baby']
 

3、分离文件名和路径
 >>> import os
>>> print os.path.split('/dodo/soft/python/')
('/dodo/soft/python', '')
>>> print os.path.split('/dodo/soft/python')
('/dodo/soft', 'python')
 

4、一个超级好的例子
  
>>> str="hello boy<[www.doiido.com]>byebye"
  
>>> print str.split("[")[1].split("]")[0]
www.doiido.com
  
>>> print str.split("[")[1].split("]")[0].split(".")
['www', 'doiido', 'com']
posted @ 2016-07-16 17:23  YC_Yuan  阅读(263)  评论(0编辑  收藏  举报