240
我爱毛绒绒~~~~~~~

Python一些简单基础的模板化语法

字符串的格式化

%s:可以接收任何类型的传值(%d只可以接收整型int)

  • 单个值

    "my age is %s" %"18.56"
    
  • 按照值对应

    res = "my name is %s,my age is %s" %("xj",18)
    
  • 按照字典传值

    res = "my name is  %(name)s,my name is %(age)s" % {"age": "Day23", "name": "xj"}
    
  • 显示%

    "成功的概率%s%%" %(70)
    

str.format:python 2.6以后兼容性最好

  • 类似%s的用法

    "my name is {},my age is {}".format("xingjie",Day23)
    
  • 索引用法,按照位置传值

    "my name is {0}{0},my age is {1}{1}".format("xingjie",Day23)
    
  • 字典用法,打破位置限制,按照key=value

    "my name is {name},my age is {age}".format(name="xingjie1",age=223)
    
格式化填充
  • 表示一共输出十个字符,在x变量右边补充到十个字符

    print("{x:=<10}".format(x="开始"))
    
  • 表示一共输出十个字符,在x变量左边补充到十个字符

    print("{x:=>10}".format(x="结束"))
    
  • 表示一共输出十个字符,在x变量居中补充到十个字符

    print("{x:=^10}".format(x="过程"))
    
  • 打印进度条效果

    tsize = 485218 #相差太大看不出效果
    dsize = 0
    while dsize < tsize:
        dsize+=1024
        psize=round(dsize/tsize,2)  # round(a,n)数字a保留n位小数
        if psize <= 1:
            num=int(psize*100)
            time.sleep(0.3)
            print('\r[%-100s]' %(num*'#'),'%s%%' %(num),end='')
        else:
            break
    
保留小数点
  • ****
    print("{salary:.3f}".format(salary=123.1234567))
    

f:python3.5以后支持

  • 直接传值

    x = "xj"
    y =18
    res = f"my name is {x},my age is {y}"
    
  • 多显示一个{}

    x = "xj"
    y =18
    res =f"姓名是{{{x}}},年龄是{{{y}}}"
    
  • {}内可以当作表达式运行

    a=f"{10+3}"
    

常用运算符(加减乘除不写)

算数运算符

print(10 / 3)#结果带小数

print(10 // 3)#结果只保留整数部分

print((11 % 2) )#取模,取余数

print(10 ** 3)#10的三次方

赋值运算符

###不仅可以是加,减,乘,除,取模,次方,都可以
age += 1  

列表和字典

列表

l = [11, 22, 'hello', 44]

  • 添加

    l.append(55)   
    
  • 插入

    l.insert(3,'world')   ###在索引为3的位置上新增'world'
    
  • 删除

    ### 单纯的删除,无法赋值
    del l[2]
    
    ### 根据索引删除
    l.pop(3)
    res=l.pop() #不指定索引默认删除最后一个,有返回值(返回被删除的值),能被赋值
    
    ### 根据列表的值删除,返回值为None
    l.remove([1,2,3])
    
  • 寻找元素所在的位置,找不到抛错

    l.index(44)
    

字典

  • 构造

    info=[
       ['name','xj'],
       ('age',18),
       ['gender','male']
    ]
    d1=dict(info)
    
  • 初始化

    keys=['name','age','gender']
    d={}
    
    d={}.fromkeys(keys,None)
    

d1 = {'name': 'xj', 'age': 18, 'gender': 'male'}

  • 取值

    ###取key为‘name’的值,key不存在报错,也能赋值
    d1['name']  ###取key为‘name’的值,key不存在报错
    
    ###取key为‘stu’的值,key不存在返回None
    d1.get('stu')
    
  • 删除

    ### 单纯删除
    del d1['age']
    
    ### pop删除:根据key删除元素,返回值为key对应的value
    d1.pop('age')
    
    ### popitem,随机删除,返回删除的元组
    d1.popitem()
    
  • 新增

    ### 将d1新字典覆盖到d的老字典中,同一个key时,以新字典的值为准
    d={'k1':1,'k2':2,'k3':4}
    d.update(d1)
    

函数

  • 装饰器模版
def outter(func):
    def wrapper(*args,**kwargs):
    #    1.调用原函数
    #    2.为其增加新功能
        res=func(*args,**kwargs)
        return res
    return wrapper

表达式

  • 三元表达式:返回值 if判断 else 返回值

    x=1
    y=2
    res='xing' if x>y else 'jie'
    
  • 列表生成式:[expression for item1 in iterable1 if condition1]

    ### 列表
    l=['alex_dsb','lxx_dsb','wxx_dsb','xxq_dsb','jack','rose']
    new_l=[name for name in l if name.endswith('dsb')]
    new_ll=[name.upper() for name in l  ]
    new_lll=[name.strip('_dsb') for name in l ]
    
    ### 字典
    keys=['name','xj','gender']
    dict={key:None for key in keys}
    
    items=[('name','xj'),('age',18),('gender','male')]
    res={k:v for k,v in items if k!='gender'}
    

函数式

  • 匿名函数:lambda
    ## 定义匿名函数
    lambda x,y:x+y #默认带return,接收x,y,然后运行x+y,将此结果当作返回值返回
    
    ## 调用匿名函数
    # 1.用函数方式调用
    res=(lambda x,y:x+y)(1,2)
    
    # 2.复制给函数名,调用
    func=lambda x,y:x+y
    
    ## 比较value的大小,返回相应的key值(max,min,sort一样的使用方法)
    salaries = {'a': 19000, 'b': 300, 'c': 80090, 'd': 7000}
    res=max(salaries,key=lambda k:salaries[k] )
    

模块

  • 使用
    # if __name__ == '__main__': #主程序
    #     foo() #在被当做脚本执行时,执行此处的代码
    
    # 1.当foo.py被当成程序运行时,__name__的值为'__main__'
    # 2.当foo.py被当成模块运行时,__name__的值为'foo'
    

时间模块:time

  • time.time()时间戳:从1970年到现在经过的秒数

  • time.strftime():按照某种格式显示时间

    # 1.struct_time 转 时间戳
    s_time=time.localtime()
    print(s_time)
    print(time.mktime(s_time))
    print(time.time())
    
    # 2.时间戳 转 struct_time
    tp_time=time.time()
    print(time.localtime(tp_time))
    
    print(time.localtime())  #当地时区,上海
    print(time.gmtime())  #世界时区
    

random模块

  • random.random():(0,1)的随机小数

  • random.randint(m,n):(m,n)的随机整数,包括1,7

  • random.randrange(m,n,i):(m,n)的随机整数,包括m,n,依次增加i

  • random.randrange(m,n):(m,n)的随机整数,顾头不顾尾

  • random.choice([11,'aa',22,'bb',33,'cc']):随机从列表中抽取,包括字符串,整型

  • random.sample([11,'aa',22,'bb',33,'cc'],3)):必需指定取值个数,从列表中随机取出3个值

  • random.uniform(1,3):随机取出大于1,小于3的小数

  • 随机验证码,字母chr(65,90)26个大写字母,chr(97,122)26个小写字母

    def make_code(n):
        res=''
        for i in range(n):
            Char=chr(random.randint(65,90))
            char=chr(random.randint(97,122))
            num=str(random.randint(0,9))
            res+=random.choice([Char,char,num])
        print(res)
    

os模块

  • os.sep:输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"

  • os.linesep:输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"

  • os.pathsep:输出用于分割文件路径的字符串 win下为;,Linux下为:

  • os.name:输出字符串指示当前使用平台。win->'nt'; Linux->'posix'

  • os.environ:获取系统环境变量

  • os.getcwd()获取当前工作目录,即当前python脚本工作的目录路径

  • os.chdir():改变当前脚本工作目录;相当于shell下cd

    os.chdir('E:/StudyProject/Day12')
    
  • os.curdir:返回当前目录: ('.')(显示当前所在目录)

  • os.pardir:windows返回的默认值是..

  • os.path.abspath(os.pardir):返回path规范化的绝对路径

  • os.makedirs():递归在当前目录下生成文件夹,/,windows系统也不要用\

    os.makedirs('test_father/test_son')
    
  • os.mkdir():生成单级目录;相当于shell中mkdir dirname

    os.mkdir('father')
    
  • os.removedirs():删除目录,只能删除一层目录

    os.removedirs('test_son')
    
  • os.remove():删除指定路径下文件,不能以逗号隔开写多个文件

    os.remove('./test_father/test.txt')
    
  • os.removedirs():若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推

    os.removedirs('./test_father/test_son')
    
  • os.rmdir():删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname

    os.rmdir('father')
    
  • os.rename():重命名文件,目录,rename 和renames用法差不多

    os.rename('../Test','../作业')
    os.renames('test.txt','../作业/write.txt')
    
  • os.path.getsize();显示文件大小

    print(os.path.getsize('a.txt'))
    
  • 显示文件时间

    • os.path.getatime(filename/path):这个时间戳表示自 Unix 纪元(1970年1月1日 00:00:00 UTC)以来文件或目录最后一次被读取或写入的时间。这个时间戳通常用于文件或目录的元信息检查,以确定文件或目录何时被最后一次访问。

    • os.path.getmtime(filename/path):表示自 Unix 纪元(1970年1月1日 00:00:00 UTC)以来文件或目录内容最后一次被修改的时间;这个时间戳通常用于确定文件或目录的内容何时被最后一次更改

    • os.path.getctime(filename/path):用于获取文件或目录的创建时间(ctime);这个创建时间通常指的是文件或目录元数据(如权限、所有权等)最后一次更改的时间,而不是文件内容本身的创建时间。

shutil模块:可以看做是OS模块的补充,它提供了对文件(夹)复制,移动,删除,压缩和解压缩的方法

  • shutil.copyfileobj():将文件内容拷贝到另一文件中

    shutil.copyfileobj(open('father/test.txt','r'),open('father/b.txt','w'))
    
  • shutil.copyfile():拷贝文件

    shutil.copyfile('father/test.txt','../Test/father.txt')
    
  • shutil.copymode():仅拷贝权限。内容、组、用户均不变,目标文件必需存在

    shutil.copymode('father/test.txt','../Test/father.txt')
    
  • shutil.copystat(src, dst):拷贝文件和状态信息

  • shutil.copy(src, dst):递归的去拷贝文件夹

  • shutil.copy2(src, dst):拷贝文件和状态信息

  • shutil.ignore_patterns(*patterns):递归的去拷贝文件夹

  • shutil.copytree(src, dst, symlinks=False, ignore=None):递归的去拷贝文件夹

  • shutil.rmtree(path[, ignore_errors[, onerror]]):递归的去删除文件

  • shutil.move(src, dst):递归的去移动文件,它类似mv命令,其实就是重命名

  • shutil.make_archive(base_name, format,...):创建压缩包并返回文件路径,例如:zip、tar;创建压缩包并返回文件路径,例如:zip、tar

sys模块

  • sys.argv:命令行参数List,第一个元素是程序本身路径

  • sys.version;获得Python解释器版本

  • sys.path:解释器路径

  • sys.platform:返回操作系统平台名称

json模块

import json
###python 转换成 json
l=['a',1,True,False,None]
l_j=json.dumps(l)
print(l_j,type(l_j)) # ["a", 1, true, false, null] <class 'str'>
#序列化导入
f=open('json1.txt',mode='w')
l_j=json.dump(l,f)


###json 转换成 python
l='["a", 1, true, false, null]'  #json 不认单引号,但是python,引号内外层不能一样,所以,外层要用单引号
l_p=json.loads(l)
print(l_p,type(l_p))
#反序列化
f=open("json.txt",mode='r')
res=json.load(f)

configparser:处理.ini结尾的配置文件

import configparser

config=configparser.ConfigParser()  #实例化一个对象
config.read('php.ini')    #选择文件查看


### 查看
config.sections()  #查看所有的标题
config.options('section1') #查看某个标题下,所有的key
config.items('section1') #查看某个标题下,key和value
config.get('section1','age') #查看某个标题下,key对应的value值,str格式
config.getint('section1','age') #查看某个标题下,key对应的value值,int格式
config.getfloat('section1','age') #查看某个标题下,key对应的value值,float格式
config.has_option('testtest','test') #判断某个标题下是否有某个key
config.has_section('test') #判断是否有某个标题


### 修改
config.add_section('testtest') #添加一个标题
config.set('testtest','test','445') #添加某个标题下的key和value,必须是str

config.remove_option('testtest','test') #删除某个标题下key
config.remove_section('testtest') #删除某个标题,(key和value)也被删除

config.write(open('test.ini','w')) #将修改写入文件,没有这句文件不改变

posted @ 2024-08-19 16:19  水开白  阅读(9)  评论(0编辑  收藏  举报