zoukankan      html  css  js  c++  java
  • day22

    假设day21-lessoninin.py
    day21-lessonmodulmain
    如何把main导入到bin文件中
    import sys
    sys.path.append(r'C:UsersAdministratorPycharmProjectspython_s3day22day21-lesson')
    from modul import main

    另一种方法
    import sys,os
    BASE_DIR=

    if __name__='__main__':
    # print(__file__)#执行文件的绝对路径 实际是最后的bin.py 其余的是pycharm加的
    # print(os.path.dirname(__file__))#上一级的绝对路径到了bin
    print(os.path.dirname(os.path.dirname(__file__)))#到了day21-lesson
    BASE_DIR=os.path.dirname(os.path.dirname(__file__))#os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.append(BASE_DIR) #在python中按上面执行




    os.path.dirname #文件的上一层目录
    os.patn.abs #文件的绝对路径

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

    print(os.getcwd())
    os.chdir('test1') #修改工作目录
    print(os.getcwd())

    #C:UsersAdministratorPycharmProjectspython_s3day22
    #C:UsersAdministratorPycharmProjectspython_s3day22 est1

    os.makedirs('dirname1dirname2') #可生成多层递归目录
    os.remvedirs('dirname1') #若目录为空则删除,并递归到上一层目录,如若也为空,则删除,以此类推
    os.makdir('dirname') #生成单级目录
    os.rmdir('dirname')#删除单级空目录,若目录不为空则无法删除
    os.remove()#删除一个文件
    os.listdir('dirname')#列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
    os.rename('','')#重命名文件 目录
    os.stat('sss.py')#获取文件 目录的相关信息(大小,时间等)
    os.sep #输出操作系统特定的路径分隔符windows下为\ linux下为/
    os.linesep #输出当前平台使用的行终止符
    os.pathsep #分割文件路径的字符串
    os.system('dir')
    os.path.split(path)#将path分割成目录和文件名二元组返回
    os.path.dirname(path)#返回path的目录
    os.path.basename(path)#返回path最后的文件名
    os.path.exists(path)#如果Path存在,true 不存在false
    os.path.isabs(path)#是否是绝对路径
    os.path.isfile(path)#是否是存在的文件
    os.path.isdir(path)#是否是存在的目录
    os.path.join(path1[path2[....]])#将多个路径组合返回,第一个绝对路径之前的参数将被忽略
    os.environ #系统环境变量
    a='C:UsersAdministratorPycharmProjects'
    b='python_s3day22day21-lesson'
    os.path.join(a,b)#路径拼接

    sys模块

    sys.path #返回模块的搜索路径,初始化时使用的是python环境变量值
    sys.exit(n)#退出程序,正常退出时exit(0)
    sys.platform #返回操作系统平台的名称
    sys.argv#命令行参数list,第一个元素是程序本身路径

    command=sys.argv[1]
    path=sys.argv[2]
    if command=='post':

    pass
    elif command=='get':
    pass

    sys.stdout.write('#') #向屏幕显示内容
    #进度条
    for i in range(10):
    sys.stdout.write('#')
    time.sleep(0.1)
    sys.stdout.flush() #刷新

    json模块

    dic='{'name':'alex'}'
    f=open('hello','w')
    f.write()

    f_read=open('hello','r')
    data=f_read.read()
    print(data)
    eval(data)


    import json
    dic={"name":"alex"}
    i=1
    s='hello'
    l=[11,22]

    f=open('new_hello','w')
    dic_str=json.dumps(dic) #字符串里面必须双引号 变成json字符串
    print(dic_str,type(dic_str))
    f.write(dic_str)

    json.dump(dic_str,f) #代替了上面三句中的一三两句


    f_read=open('new_hello','r')
    data=json.loads(f_read.read()) #data=json.load(f_read)
    print(data) #输出是字典


    新建json_test文档
    {"name":"alvin"} #不能是单引号

    import json
    with open('json_test','r') as f:
    data=f.read()
    print(type(data))
    data=json.loads(data)
    print(data['name'])


    #pickle模块 #支持的类型多
    import pickle模块
    dic={'name':'alvin','age':23,'sex':'male'}
    print(type(dic))
    j=pickle.dumps(dic) #字节

    f=open('序列化对象_pickle','wb')
    f.write(j)

    import pickle
    f=open('序列化对象_pickle','rb')
    data=pickle.loads(f.read())
    print(data['age'])

    #shelve模块
    shelve模块比pickle模块简单,只有一个open函数,返回值类似字典的对象。可读可写:key必须为字符串,二值可以是
    python所支持的数据类型


    import shelve
    f=shelve.open(r'shelvel.txt') #目的:将一个字典放入文本
    f['stu1_info']={'name':'alex','age':'18'}
    f['stu2_info']={'name':'alvin','age':'20'}
    f['school_info']={'website':'oldboyedu.com','city':'beijing'}
    f.close()

    f=shelve.open(r'shelvel.txt')
    print(f.get('stu1_info')['age'])

    f.close()

    #xml模块
    xml是实现不同语言和程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单
    data
    country
    rank
    year
    country
    rank
    year
    country
    rank
    year

    import xml.etree.ElementTree as ET #简写


    tree=ET.parse('xmltest_lesson')
    root=tree.getroot()
    print(root.tag)

    for i in root:

    print(i.tag) #标签名字
    print(i.attrib) #属性

    for j in i:
    print(j.tag)
    print(j.attrib)
    print(j.text) #标签文本内容


    for node in root.iter('year'): #遍历所有的year
    print(node.tag.node.text)




    #修改

    import xml.etree.ElementTree as ET

    tree=ET.parse('xmltest_lesson')
    root=tree.getroot()

    tree.write('abc.xml')
    for node in root.iter('year'):
    new_year=int(node.text)+1 #改文本
    node.text=str(new_year)
    node.set('updated','yes') #改属性

    #删除node
    for country in root.findall('country'): #找多个
    rank=int(country.find('rank').text)
    if rank>50:
    root.remove(country)

    tree.write('output.xml')

    #创建一个xml
    new_xml=ET.Element('namelist') #根节点标签
    name=ET.SubElement(new_xml,'name',attrib={'enrolled':'yes'})
    age=ET.SubElement(name,'age',attrib={'checked':'no'})
    sex=ET.SubElement(name,'sex')
    sex.text='19'
    name2=ET.SubElement(new_xml,'name',attrib={'enrolled':'no'})
    age=ET.SubElement(name2,'age')
    age='19'

    et=ET.ElementTree(new_xml) #生成文档对象
    et.write('test.xml',encoding='utf-8',xml_declaration=True)



    #re模块
    就其本质而言,正则表达式(或re)是一种小型的,高度专业化的编程语言,在(python中),它内嵌在python中,
    并通过re模块实现,正则表达式模式被编译成一系列的字节编码,然后由用c编写的匹配引擎执行

    字符串内置方法都是完全匹配

    模糊匹配

    元字符: . ^ $ * + ? {} [] | ()
    . 除了 其他的字符都能匹配上 通配符
    re.findall('alex','hjaksdfhalrex')
    re.findall('a..x','hjaksdfhalexlg')


    re.findall('^a..x','hjaksdfhalexlg') #在字符串的开头匹配

    re.findall('a..x$','hjaksdfhalexlg') #在字符串的结尾匹配

    re.findall('d*','hjdaksdddddfhalexlg') #紧挨着的字符重复 不管次数
    #['', '', 'd', '', '', '', 'ddddd', '', '', '', '', '', '', '', '', '']

    re.findall('^d*','dddlksdfgj')

    re.findall('d+','hjdaksdddddfhalexlg') #1到无穷次 ['d', 'ddddd']

    re.findall('d?','hjdaksdddddfhalexlg')#0到1次数

    {} {0,}==*
    {1,}==+
    {0,1}==?
    {6} #重复6次
    {1,6}#重复1到6次
    re.findall('alex{0,6}','hjdaksdddddfhalexlg')

    前面的* + ?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成惰性匹配

    []字符集 []里面无特殊符号除了4个

    re.findall('www.[oldboy baidu]','www.baidu') #或
    re.findall('x[y z]p','xypuuxzpux') #['xyp', 'xzp']
    re.findall('x[yz]p','xypuuxzpux') #['xyp', 'xzp']
    re.findall('q[a*z]','ksadfkqaa')

    re.findall('q[a-z]','qu') #[a-z]#表示a到z
    re.findall('q[^a-z]','q899uogjgkjjhkq9') ^非 不是a到z

    re.findall('([^()]*)','12+(34*6+2-5*(2-1))') #( 表示普通括号

    特殊的 - ^
    反斜杠后面跟元字符取出特殊功能如.
    反斜杠后面跟普通字符实现特殊功能如d
    d [0-9]
    D 非数字部分
    S 匹配任何空白字符
    S 匹配非空白字符
    w 匹配任何字母数字字符
    W 匹配任何非字母数字字符
     匹配一个特殊字符边界

     2018-08-27

  • 相关阅读:
    如何让自己的app尽量不被系统杀死
    linux常用命令-权限管理命令
    linux常用命令-用户管理命令
    linux常用命令-文件处理命令
    npm命令
    新技术新框架新工具选型原则
    tomcat启动命令行中文乱码
    docker命令
    tinkpad e450c 进入 BIOS
    基于Java服务的前后端分离解决跨域问题
  • 原文地址:https://www.cnblogs.com/jiangjunfeng/p/9544656.html
Copyright © 2011-2022 走看看