2021-10-27 python 常用总结

subprocess与os.system

subprocess.getoutput(cmd) 等同于 os.system(cmd).readline()
在这里插入图片描述

/home/lenovo/git/auto-scripts/venv/bin/python /home/lenovo/git/demo.py
cmd >>> cat /etc/issue
以下为  测试内容 >>> 
---------- os.system(cmd) ----------
Ubuntu 21.10 \n \l

0
---------- os.popen(cmd)  ----------
<os._wrap_close object at 0x7fc76f9a21c0>
---------- os.popen(cmd).readline() ----------
Ubuntu 21.10 \n \l

以下为 subprocess 测试内容 >>> 
---------- subprocess.call(cmd, shell=True) ----------
Ubuntu 21.10 \n \l

0
---------- subprocess.run(cmd, shell=True) ----------
Ubuntu 21.10 \n \l

CompletedProcess(args='cat /etc/issue', returncode=0)
---------- subprocess.getoutput(cmd, shell=True) ----------
Ubuntu 21.10 \n \l

转义字符

  • 在需要在字符中使用特殊字符时 用反斜杠 \ 转义字符
    转义字符描述
    \(在行尾时)续行符
    \反斜杠符号
    \’单引号
    \"双引号
    \a响铃
    \b退格(Backspace)
    \e转义
    \000
    \n换行
    \v纵向制表符
    \t横向制表符
    \r回车
    \f换页
    \oyy八进制数,y 代表 0~7 的字符,例如:\012 代表换行。
    \xyy十六进制数,以 \x 开头,yy代表的字符,例如:\x0a代表换行
    \other其它的字符以普通格式输出

Print 格式化输出

  • 格式化

    格式含义
    %s字符串
    %d整形
    %c单字符
    %f浮点数。控制为数 %.2f 保留两位小数
    %x十六进制
    t = 16.2326
    print('%10.2f'%(t))  #10-表示字宽10位,精度为2
    print('%010.2f'%(t))  #010表示字宽10,不够用0填充
    print('%+010.2f'%(t))  #添加加号表示显示正负号
    print('%-10.2f'%(t))  #添加负号表示左对齐
    s = 'l'
    print('%c'%(s))
    print('快速增长%d%%'%(t))   #用 %% 表示 %
    r = 188
    print('十六进制%x'%(r))
    
  • 通过 .format()进行输出

    # 变量写在format内
    print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))
    printf'"网站名:{name}, 地址 {url}"'# 通过字典设置参数
    site = {"name": "菜鸟教程", "url": "www.runoob.com"}
    print("网站名:{name}, 地址 {url}".format(**site))
    # 通过列表索引设置参数
    my_list = ['菜鸟教程', 'www.runoob.com']
    print("网站名:{0[0]}, 地址 {0[1]}".format(my_list))  # "0" 是必须的
    
  • Python 中字符串的前导 r 代表原始字符串标识符,也就是说 用r’ ‘表示’ '内部的字符串默认不转义

    print(r'\\\t\\')
    >>> \\\t\\
    

Json 序列化、反序列化

loads: 是将string转换为dict
dumps: 是将dict转换为string
load: 是将里json格式字符串转化为dict,读取文件
dump: 是将dict类型转换为json格式字符串,存入文件

  • load 和 loads (反序列化)

    '''load:针对文件句柄,将json格式的字符转换为dict 从文件中读取 (将string转换为dict)'''
    a_json = json.load(open('demo.json','r'))
    
    '''loads:针对内存对象,将string转换为dict (将string转换为dict)'''
    a = json.loads('{'a':'1111','b':'2222'}')
    
  • dump 和 dumps(序列化)

    '''dump:将dict类型转换为json字符串格式,写入到文件 (易存储)'''
    a_dict = {'a':'1111','b':'2222'}
    json.dump(a_dict, open('demo.json', 'w')
    
    '''dumps:将dict转换为string (易传输)'''
    a_dict = {'a':'1111','b':'2222'}
    a_str = json.dumps(a_dict)
    

判断变量是否存在

  • locals() : 基于字典的访问局部变量的方式。键是变量名,值是变量值。
  • globals() : 基于字典的访问全局变量的方式。键是变量名,值是变量值。
var_exists = 'var' in locals() or 'var' in globals()

# Demo
old ='test'
print('old' in locals()) 

>>> True
print('new' in locals()) 
>>> False

python如何判断self.属性是否存在

  • 方法一:使用函数:hasattr(object, name)
    下面看下函数hasattr()的用法:
    方法一:使用函数hasattr()
    如果自己定义的话:
    自己定义

  • 方法二:用dir来判断:
    方法二:用dir来判断
    代码含义:如果objlist对象里面存在att属性,则打印出改属性!

    示例
    ‘varname’ in dir()

    	    def __init__(self):
    	        self.name = 'Tony'
    	        self.gender = 'Male'
    	     
    	    def isExist(self, varname):
    	        if varname in dir(self): 
    	            print(varname, ':' ,eval('self.' + varname))
    	        else:
    	            print(varname, ' is not exist!')
    	      	new = User() 	new.isExist('name') 	new.isExist('age') 	 	
    	------------输出------------
    	>>> name : Tony
    	>>> age  is not exist! 	
    
  • 方法三:通过异常捕捉实现
    方法三:通过异常捕捉实现
    代码含义:通过异常捕捉来实现逻辑!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值