python零碎知识点(2019-08-16)

python零碎知识点

近来在复现Meta-SR,写这系列总结相当于备忘录,记录每天遇到的一些python语法知识点,为方便日后不断复习(小白在成长)

1. open()函数

open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。
常见的写入模式:

a如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件

2. vars()与getattr()

vars() 函数返回对象object的属性和属性值的字典对象。
getattr()函数用于返回一个对象某个属性值。

		open_type = 'a' 	# 文件打开模式
        self.log_file = open(self.dir + '/log.txt', open_type)                  # open对象
        with open(self.dir + '/config.txt', open_type) as f:
            for arg in vars(args):      #         # vars() 函数返回对象object的属性和属性值的字典对象。
                f.write('{}: {}\n'.format(arg, getattr(args, arg)))     # getattr() 函数用于返回一个对象属性值。
            f.write('\n')

本例中,args是一个object对象;vars(args)返回一个字典;arg是字典中的key值;getattr(args, arg) 返回arg对应的属性值。

3. asarray() 与 array()

out = numpy.asarray(list)		# not copy
# or 
out = numpy.array(list)		# 默认会copy一份数据
# 将数据结构(list,tuple等)转化为numpy.ndarray;
4.rgb<–>bgr

opencv读入的图片默认是bgr形式;可以通过此方法转化为通用的rgb形式。

rgb = img[...,::-1]		

5.os模块

os模块是python中最常用的文件操作模块之一。十分好用!
os.listdir()

files = os.listdir(path) 	# 以list形式返回path路径下所有文件,
	

os.path.splitext()

用来分离文件名与扩展名

    path_01='D:/User/wgy/workplace/data/notMNIST_large.tar.gar'
    path_02='D:/User/wgy/workplace/data/notMNIST_large'
    
    root_01=os.path.splitext(path_01)
    root_02=os.path.splitext(path_02)
    dirfile = os.path.split(path_01)
    print(root_01)
    print(root_02)
    print(dir)
    print(file)

结果:

	# 返回tuple
    ('D:/User/wgy/workplace/data/notMNIST_large.tar', '.gar') 
    ('D:/User/wgy/workplace/data/notMNIST_large', '')
    D:/User/wgy/workplace/data
    notMNIST_large.tar.gar

os.path常用模块:

python中os.path常用模块
os.path.sep:路径分隔符      linux下就用这个了’/’
os.path.altsep: 根目录
os.path.curdir:当前目录
os.path.pardir:父目录
os.path.abspath(path):绝对路径
os.path.join():       常用来链接路径
os.path.split(path):      把path分为目录和文件两个部分,以list返回
os.path.splitext(path)

6.os.walk()遍历

os.walk()用类似于 深度遍历 的方式遍历文件夹中的子文件夹以及文件。以tuple形式返回(root_path,[file_dirs],[files])
os.walk()本身是一个生成器对象
生成器对象

path = /home/wyl/pointer
for path,file_dirs,files in os.walk(path):
	for dir in dirs:
            for img_path, _, files in os.walk(path + '/' + dir):
                for file in files:
                    print(str(i) +'  ' + file)
                    i += 1

7.generator生成器

函数有了yield之后,函数名+()就变成了生成器。为什么叫生成器函数?因为它随着时间的推移生成了一个数值队列。一般的函数在执行完毕之后会返回一个值然后退出,但是生成器函数会自动挂起,然后重新拾起急需执行,他会利用yield关键字关起函数,给调用者返回一个值,同时保留了当前的足够多的状态,可以使函数继续执行,生成器和迭代协议是密切相关的,迭代器都有一个__next__()__成员方法,这个方法要么返回迭代的下一项,要买引起异常结束迭代。
博客说明:https://www.cnblogs.com/wj-1314/p/8490822.html

def fib(max):	# 生成器函数
n,a,b=0,0,1
while n<max:
	yield b		# 返回b,并自动挂起
	a,b=b,a+b
	n=n+1
return 'done'

a=fib(10)
for i in a:		# 生成器与迭代器的配合使用
	print(i)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值