zoukankan      html  css  js  c++  java
  • 自动化测试第五节模块

    1、模块:
    一个模块就是一个python文件,一个python文件也叫做一个模块

    常量:常量我们一般用全部大写字母来定义,如:USER_FILE='user.txt'

    1、标准模块、标准包,即python自带的模块,如:import time,random,string

    2、第三方模块:别人写好的模块,使用时需要先安装才能导入
    1)在cmd下执行:pip install XXXX
    #在python3中时自带的,Python2下需要手动安装
    2)手动安装,从模块的目录下进入cmd,执行python setup.py install
    3)直接从pycharm下安装
    import xpinyin
    name='王俊熹'
    s=xpinyin.Pinyin()
    print(s.get_pinyin(name))

    3、自己写的python文件
    #import的实质就是把要导入的python文件全部执行了一遍
    import login#import后面是要导入的模块名,即Python文件的名称,不需要加文件后缀
    res=login.login_info()#调用模块下的函数时,格式为:模块名.函数名
    # 1)import在取寻找python的时候:1、先从当前目录找 2、再从环境变量中找(Python自己的环境变量)
    # 2)from 模块名 import 函数名 as test(as表示起别名):只导入模块的其中一个函数
    from login import login_info
    例子:
    import sys
    # print(sys.path)#查看当前有那些目录在python的环境变量里面

    sys.path.append(r'E:\pythonfile\fourth-class\作业')#r表示原字符,将python文件的目录临时添加到python的环境变量中,执行完毕后消失
    import isfloat#将Python文件放入环境变量后就可以导入
    isfloat.isfloat(9)

    sys.path.insert(0,r'E:\pythonfile\fourth-class\作业')#导入到列表的首位,当不同的环境变量中有相同的文件名时,优先取环境变量列表下标靠前的路径
    import isfloat#isfloat.py在多个环境变量中存在
    print(isfloat.isfloat(9))

    import test#执行结果是:test(即test模块的文件名,test文件内容中放入代码print(__name__))
    print(__name__)#执行结果是:__main__
    #1、python文件自己运行的时候__name__是__main__
    #2、其他python文件里面导入另一个python文件时,那么那个python的__name__变成了导入的哪个python文件名

    例子,模块文件中的内容如下:
    def coon_mysql(host,port,passwd,user,db):
    print(host,port,passwd,user,db)
    if __name__ == '__main__':#别人在导入的时候不会走到这个if下的代码,只会执行这个if上面的代码
    coon_mysql('1.1.1.1',233,123456,'wxc','mysql')#测试代码
    coon_mysql('1.1.1.1',234,654321,'nina','mysql')#测试代码


    2、添加断点
    点击代码行最左侧,可以打断点,方便调试代码



    3、常用模块
    参考:http://www.nnzhp.cn/archives/150
    os模块
    import os
    print(os.getcwd()) # 取当前工作目录--常用
    print(os.mkdir("test1")) # 创建文件夹--常用
    print(os.rmdir("test1")) # 删除指定的文件夹,只能删除空文件夹--常用
    print(os.remove("log.log")) # 删除文件,不能删除文件夹--常用
    print(os.listdir('.')) # 列出一个目录下的所有文件--常用
    os.rename("test", "test1") # 重命名--常用
    print(os.linesep)# 当前操作系统的换行符
    print(os.sep) # 当前操作系统的路径分隔符--常用
    print(os.path.abspath(__file__)) # 获取绝对路径--常用
    print(os.path.split("/usr/hehe/hehe.txt")) # 分割路径和文件名,生成一个元组--常用
    print(os.path.dirname("/usr/local")) # 获取父目录--常用
    print(os.path.exists("/pythonfile/five-class")) # 目录/文件是否存在--常用
    print(os.path.isfile("/usr/local")) # 判断是否是一个文件--常用
    print(os.path.isdir("/pythonfile/five-class")) # 是否是一个路径--常用
    print(os.path.join("/root", 'hehe', 'a.sql')) # 拼接成一个路径--常用


    例子:
    d={}
    print('%s'%os.linesep) # 当前操作系统的换行符
    d['hh']=os.linesep
    print(d)

    4、深拷贝和浅拷贝
    #exc exc sss
    a=b=c='exc'#三个内存地址,字符串是不可变的
    c='sss'
    print(a,b,c)

    a=b=c=('exc')
    c=('sss')
    print(a,b,c)

    #深拷贝和浅拷贝...
    #['wxc', '222'] ['wxc', '222'] ['wxc', '222']----浅拷贝,a和b互相影响
    a=b=c=['wxc']#同一个内存地址,列表是可变的
    c.append('222')
    print(a,b,c)
    print(id(a),id(b))

    #[13, [4, 5, 6, 7]] [13, [4, 5, 6]]
    import copy#------深拷贝,a和b互不影响
    a=[13,[4,5,6]]
    b=a
    b=copy.deepcopy(a)---深拷贝
    # b=copy.copy(a)---浅拷贝
    a[-1].append(7)
    print(a,b)
    print(id(a),id(b))

    #['wxc'] ['wxc'] ['222']
    a=b=c=['wxc']#c重新赋值了,内存地址改变了,但是a和b的内存地址没有变
    c=['222']
    print(a,b,c)

    5、三元运算符
    a=5
    b=4
    c=a if a>b else b
    #等同于
    if a>b:
    c=a
    else:
    c=b
    6:练习程序例子
    1)打印出包含数字字母的字符串
    #1\替换特殊字符为固定字符replace
    #2\按照这个固定字符分割字符串split
    #3\循环list,判断list里面每个元素是否包含字母和数字
    #4\判断长度,最长的留下,打印
    #5\用2个list,一个
    import string
    def long(st):
    a=string.punctuation
    for i in a:
    if i in st:
    st=st.replace(i,',')
    st=st.split(',')
    new_st=[]
    len_st=[]
    for i in st:
    # if set(i) & set(string.ascii_letters) and set(i) & set(string.digits):
    # new_st.append(i)
    i=i.strip()
    if not i.isdigit() and not i.isalpha() and len(i)>0:
    new_st.append(i)
    len_st.append(len(i))
    max_len=max(len_st)#先找到最大的长度
    max_len_count=len_st.count(max_len)
    if max_len_count>1:
    for l in range(len(len_st)):
    if len_st[l]==max_len:
    print('最长长度的字符串是%s,最长的长度是%s' % (new_st[l], max_len))
    else:
    index = len_st.index(max_len) # 再找这个长度的下标
    st = new_st[index] # 最长字符串,最长字符串的下标和最大长度的下标相同
    print('最长长度的字符串是%s,最长的长度是%s'%(st,max_len))
    long('$sd1#111$svda123!svda143!!221&eSSDSDG')

    2)打印进度条:
    import time
    for i in range(10):
    time.sleep(1)
    print('#',end='',flush=True)#end表示以什么结尾,默认是换行符,flush表示立即写入,不用等程序结束后一起打印
    3)文件读写:
    def op_file(file_name,content=None):#文件读写
    f = open(file_name, 'a+')
    f.seek(0)
    if content:
    f.truncate()
    f.write(str(content))
    f.flush()
    res = None
    else:
    res = eval(f.read())
    f.close()
    return res
     




     
  • 相关阅读:
    NOI2005维修数列
    BZOJ1208 [HNOI2004]宠物收养所
    BZOJ3223 文艺平衡树
    BZOJ [JSOI2008]星球大战starwar
    BZOJ1013 [JSOI2008]球形空间产生器sphere
    小程序之底部tabBar
    es6
    vue.js安装
    模块打包工具webpack
    highchart
  • 原文地址:https://www.cnblogs.com/ninanie/p/7718439.html
Copyright © 2011-2022 走看看