python基础整理笔记(四)
一. python 打开文件的方法
1. python中使用open函数打开文件,需要设定的参数包括文件的路径和打开的模式。示例如下:
f = open('a.txt', 'r+')
2. f为打开文件的句柄,具体读取文件的操作需要调用f的方法,示例如下:
f = open('a.txt', 'r+')
# read 以字符串形式打开整个文件
f.read()
# readline 每次只读取一行的内容,到下一次时才加载下一次
l = f.readline()
print(l)
while l:
f.readline()
print(l)
# readlines 读取所有行以列表形式返回
for i in f. readlines():
print(i)
此外上述三个方法都有一个可选参数,是一个int类型的,限制读取内容最大size的。如果需要读取的内容很大,则只能使用readline方法一点点读取。
3. 其实打开文件的句柄本身也是可以迭代的,示例如下:
f = open('a.txt', 'r+')
# f也是每次只读取一行的内容,不过f是可以直接循环迭代的
for i in f:
print(i)
4. 写文件的函数包括write和writelines,区别为前者入参是一个str,后者为列表,示例如下:
f = open('a.txt', 'w+')
# write是把入参的字符整个原样写入文件的
f.write('saff1\nwqwq')
# 注意writelines写入列表时候不会在每个元素后面加上换行,
# 写到文件里以后是会连起来的,要换行需要自己加
l = ['', '', '']
f.writelines(l)
f.writelines(['%s\n'%i for i in l])
5. 使用文件结束后需要把文件句柄关闭,示例如下:
f = open('a.txt', 'w+')
f.close()
6. 如果使用with来打开文件,则不需要close了,关于文件操作的打开关闭已经直接封装好了,示例如下:
with open('a.txt', 'r+') as f:
print(f.read())
7. 整理打开的模式如下:

二. python一些内置函数整理

详细的官网文档链接 https://docs.python.org/3/library/functions.html
三. 装饰器
装饰器实际是一种接受函数作为参数的函数的语法糖。
1. 最普通的装饰器示例如下:
# 修饰不需要入参的函数
def deco(func):
def _deco():
print("before myfunc()")
res = func()
print(" after myfunc()")
return res
return _deco @deco
def myfunc():
print(" myfunc() start")
return True # 修饰有入参的函数
def deco2(func):
def _deco(a, b):
print("before myfunc()")
res = func(a, b)
print(" after myfunc()")
return res
return _deco @deco2
def myfunc2():
print(" myfunc() start")
print(a, b)
return True
2. 修饰参数不确定的函数,示例如下
# 修饰入参数量不定的函数
def deco(func):
def _deco(*args, **kwargs):
print("before myfunc()")
res = func(a, b)
print(" after myfunc()")
return res
return _deco @deco
def myfunc(a):
print(" myfunc() start")
print(a)
return True @deco
def myfunc2():
print(" myfunc() start")
print(a, b)
return True
3. 自身带有入参的装饰器,示例如下:
def deco(sign):
def wraper(func):
def _deco(*args, **kwargs):
print("%s before myfunc()"%sign)
res = func(a, b)
print(" after myfunc()")
return res
return _deco
return wraper @deco("func1")
def myfunc(a):
print(" myfunc() start")
print(a)
return True @deco("func2")
def myfunc2():
print(" myfunc() start")
print(a, b)
return True
4. 带有类作为入参的装饰器,示例如下:
class locker:
def __init__(self):
print("locker.__init__() should be not called.") @staticmethod
def acquire():
print("locker.acquire()") @staticmethod
def release():
print(" locker.release() called") # 作为入参的类必须实现acquire和release静态方法
def deco(cls):
def wraper(func):
def _deco():
print("before %s called [%s]." % (func.__name__, cls))
cls.acquire()
try:
return func()
finally:
cls.release()
return _deco
return wraper @deco(locker)
def myfunc():
print(" myfunc() called.")
四. configparser库
在这次完成的作业,实现用户系统存储在文件中的需求。如果信息不是很大,可以使用python中的configparser库来实现,更加方便。(在python2中该库叫ConfigParse,需要pip来安装)
该库实现了操作ini风格类型文件的各种方法。ini风格类型示例如下:
[]
password =
admin_flag = []
password =
admin_flag = []
password =
admin_flag =
每个[]代表一个section,下面一个等号对代表这个section的一项属性和值。使用configparser的各种方法示例如下:
cf = configparser.ConfigParser()
# 读取文件
cf.read('a.conf') # sections方法返回所有的section名字的列表
for sec in cf.sections():
print(sec) # 增加一个新的section
cf.addsection('')
# 给新的section'555'增加属性
set('', 'password', '') # 原有的section的属性也可以更改,和增加的方法一致
set('', 'password', '') # 通过get和getint方法之类可以取到一个section的一个属性的值
cf.get('', 'password')
cf.getint('', 'password') # 通过items可以获得一个section的所有属性
cf.items('') # 更改结束以后,用write修改文件
cf.write(open('a.conf', "w")
五. python内置的sorted用法
sorted是内置的对一个序列进行排序的方法,必须包含一个序列的入参,其他还有可选入参key,cmp(注意python3没这个了),reverse。
1. key参数的值为一个函数,此函数将在每个元素比较前被调用,它只有一个参数且返回一个值,让sorted用这里返回的值进行比较,示例如下:
student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 10),]
# 这里取每个元素的最后一个元素比较
sorted(student_tuples, key=lambda student: student[2]) # 这里就取每个字母的小写比较
sorted("This is a test string from Andrew".split(), key=str.lower)
2. cmp参数示例如下:
def numeric_compare(x, y):
return x - y # cmp接受一个返回bool类型变量的函数,
# 用于定义一些比较比较
# 其入参代表序列中前后两个元素
sorted([5, 2, 4, 1, 3], cmp=numeric_compare)
在网上找到一个很牛叉的,从2->3移植代码时候,转换cmp到key的方法如下:
def cmp_to_key(mycmp):
'Convert a cmp= function into a key= function'
class K(object):
def __init__(self, obj, *args):
self.obj = obj
def __lt__(self, other):
return mycmp(self.obj, other.obj) < 0
def __gt__(self, other):
return mycmp(self.obj, other.obj) > 0
def __eq__(self, other):
return mycmp(self.obj, other.obj) == 0
def __le__(self, other):
return mycmp(self.obj, other.obj) <= 0
def __ge__(self, other):
return mycmp(self.obj, other.obj) >= 0
def __ne__(self, other):
return mycmp(self.obj, other.obj) != 0
return K
调用的时候这样:
sorted([5, 2, 4, 1, 3], key=cmp_to_key(reverse_numeric))
3. reverse值为bool类型,即确定是否需要倒序排列。
python基础整理笔记(四)的更多相关文章
- python基础整理笔记(一)
一. 编码 1. 在python2里,加载py文件会对字符进行编码,需要在文件头上的注释里注明编码类型(不加则默认是ascII). # -*- coding: utf-8 -*- print 'hel ...
- python基础整理笔记(九)
一. socket过程中注意的点 1. 黏包问题 所谓的黏包就是指,在TCP传输中,因为发送出来的信息,在接受者都是从系统的缓冲区里拿到的,如果多条消息积压在一起没有被读取,则后面读取时可能无法分辨消 ...
- python基础整理笔记(八)
一. python反射的方式来调用方法属性 反射主要指的就是hasattr.getattr.setattr.delattr这四个函数,作用分别是检查是否含有某成员.获取成员.设置成员.删除成员. 此外 ...
- python基础整理笔记(五)
一. python中正则表达式的一些查漏补缺 1. 给括号里分组的表达式加上别名:以便之后通过groupdict方法来方便地获取. 2. 将之前取名为"name"的分组所获得的 ...
- python基础整理笔记(二)
一. 列表 1. 创建实例: a = [1,2,3] b = list() 2. 主要支持的操作及其时间复杂度如下: 3. 其他 python中的列表,在内存中实际存储的形式其实是分散的存储,比较类似 ...
- python基础整理笔记(七)
一. python的类属性与实例属性的注意点 class TestAtt(): aaa = 10 def main(): # case 1 obj1 = TestAtt() obj2 = TestAt ...
- python基础整理笔记(三)
一. python的几种入参形式:1.普通参数: 普通参数就是最一般的参数传递形式.函数定义处会定义需要的形参,然后函数调用处,需要与形参一一对应地传入实参. 示例: def f(a, b): pri ...
- python基础整理笔记(六)
一. 关于hashlib模块的一些注意点 hashlib模块用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512, MD ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
随机推荐
- 1. IOS 9.3.3描述文件没了处理方法
1.用手机登录:https://beta.apple.com/ 2.找到"注册您的设备" 3.往下拉第二点就是,直接点击下载即可.
- delphi ftBlob二进制字段读取存储
aStream:TMemoryStream; 保存到字段 qrypub.ParamByName('Data').LoadFromStream(aStream, ftBlob); 从字段读取到mem里 ...
- CSS盒子模型学习记录1
http://www.blueidea.com/tech/web/2007/4545.asp 代码试验: html代码: <!DOCTYPE html PUBLIC "-//W3C// ...
- MySQL5.7.10免安装版配置
最新版的 Mysql 不提供图形界面的安装了, 下载下来是一个压缩包的形式, 那么我们如何来使用它呢, 让它为我们工作呢? 环境: mysql-5.7.10-winx64 + win7(64位) 一 ...
- [珠玑之椟]浅谈代码正确性:循环不变式、断言、debug
这个主题和代码的实际写作有关,而且内容和用法相互交织,以下只是对于其内容的一个划分.<编程珠玑>上只用了两个章节20页左右的篇幅介绍,如果希望能获得更多的实例和技巧,我比较推崇<程序 ...
- hivepython 同时读入python 且python脚本中处理外部文件txt
找出表test_gid2中每个gid的安装列表中含有文件pkgs中的pkg名字的数据行. pkgs文件要与python脚本放在一个路径下. 用 transform 的传入数据的时候,不管原文件分隔 ...
- 快考试了,尽快写完HashTable。
(1)Count Primes 质数(素数):在大于1 的自然数中,除了1和它本身之外,不能被任何其他整数整除. 解题思路:使用一个boolean类型的数组,从i(2) 开始循环,将小于N的i的倍数都 ...
- DrawingControl控件在Add Page时报故障的问题
Visio二次开发用到了Drawing Control控件.在控件上添加新页面时,visual编译器报内存保护故障“尝试读取或写入受保护的内存.这通常指示其他内存已损坏.”,这个问题困扰了我很久,最后 ...
- Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK fla
转载于 http://blog.csdn.net/wike163/article/details/6678073 从一个Activity中要通过intent调出另一个Activity的话,需 ...
- count distinct 多个字段 或者 count(*) 统计group by 结果
SELECT COUNT(*) FROM( SELECT 列名 FROM 表名 where ( 条件 )GROUP BY 多字段)临时表名 例如: SELECT COUNT(*) FROM(SELEC ...