def removehead(filename, headlines):
buffer = []
with open(filename, 'rt') as handle:
for i, ln in enumerate(handle):
if i > headlines:
buffer.append(ln)
with open(filename, 'wt') as handle:
handle.writelines(buffer)
removehead("aaa",100)
关于enumerate函数的用法如下:
a = ['3', '1223''121', '13', '123', '13', '3', '123''121', '13', '1', '1223','13', '23''13', '1223', '12', '121', '13', '123123','13', '123', '13']
for i in enumerate(a):
print(i)
结果如下:
(0, '3')
(1, '1223121')
(2, '13')
(3, '123')
(4, '13')
(5, '3')
(6, '123121')
(7, '13')
(8, '1')
(9, '1223')
(10, '13')
(11, '2313')
(12, '1223')
(13, '12')
(14, '121')
(15, '13')
(16, '123123')
(17, '13')
(18, '123')
(19, '13')
对于遍历文件取出指定内容的另一种写法:
from functools import partial
f = open('aaa','r')
f1 = open('newfile.txt','w')
print(callable(partial(f.readlines,100)))
source = iter(partial(f.readlines,100),[])
for item in source:
del item[:10]
f1.writelines(item)
f.close()
f1.close()
偏函数(Partial)
举个例子,来说明一下什么是偏函数
from functools import partial
def sum(*args):
s = 0
for n in args:
s = s + n
return s
sum_add_10 = partial(sum, 10) # 10 作用在sum第一个参数的位置
sum_add_10_20 = partial(sum, 10, 20) # 10 20 分别作用在sum第一个和第二个参数的位置
print('A:')
print(sum)
print('B:')
print(partial(sum, 10))
print(sum_add_10(1, 2, 3, 4, 5)) # --> 10 + 1 + 2 + 3 + 4 + 5 = 25
print(sum_add_10_20(1, 2, 3, 4, 5))
# 结果
A:
<function sum at 0x10df5ee18>
B:
functools.partial(<function sum at 0x10df5ee18>, 10)
25
45
使用partial的时候,第一个参数是一个函数,第二个参数是第一个函数里的参数。而且使用partial的时候必须把结果用一个变量来接收。