zoukankan      html  css  js  c++  java
  • 第六周作业

    import os,datetime
    dirs = ['tomcat','nginx','apache','python','app','android','ios']
    os.chdir(r'E:syzly-codeday6logs')
    base_path = r'E:syzly-codeday6logs'
    for d in dirs:
    p = os.path.join(base_path,d)
    os.mkdir(p)
    os.chdir(p)
    for i in range(1,10):
    t = datetime.date.today()+datetime.timedelta(-i)
    name = '%s_%s.log'%(d,t)
    open(name,'w')


    def my_db(host,user,passwd,db,sql,port=3306,charset='utf8'):
    import pymysql
    coon = pymysql.connect(user=user,
    host=host,
    port=port,
    passwd=passwd,
    db=db,
    charset=charset
    )
    cur = coon.cursor() #建立游标
    cur.execute(sql)#执行sql
    if sql.strip()[:6].upper()=='SELECT':
    res = cur.fetchall()
    else:
    coon.commit()
    res = 'ok'
    cur.close()
    coon.close()
    return res

    # 把双数日期的日志,里面给随便写点东西。
    # 1、获取到log目录下面的所有文件 os.walk()
    # 2、根据文件名来判断,是否是双数日期 ,分割字符串,取到日期
    # 3、12%2==0
    # 4、打开这个文件 open()
    import os
    for abs_path,dir,file in os.walk(r'E:syzly-codeday6logs'):
    for f in file:
    day = f.split('.')[0].split('-')[-1]
    if int(day)%2==0:
    file_name = os.path.join(abs_path,f)#拼接绝对路径
    open(file_name,'a+',encoding='utf-8').write('写东西')#


    import sys
    import os
    command = sys.argv
    print(command)
    if len(command)>1:
    cmd1 = command[1]
    if cmd1=='--help':
    print('这个是帮助文档'
    '这个python文件是用来说明sys.argv的作用')
    elif cmd1=='os':
    print('当前的操作系统是%s'%sys.platform)
    else:
    print('输入命令有误')
    else:
    print('运行python的时候要传入一个参数'
    'e.g '
    'python xx.py install ')
    
    
    # import xpinyin
    # p = xpinyin.Pinyin() #实例化
    # res = p.get_pinyin('陈伟良','')
    # print(res)

    def say():
    num1 = 1
    num2 = 2
    num3 = 3
    return num1,num2,num3
    res1,res2,res3 = say()

    #匿名函数,这个函数功能很简单,只用一次
    # 1,33


    import random
    red_num = random.sample(range(1,34),6)
    new_num = [ str(num).zfill(2) for num in red_num ] #列表生成式
    l = [ i for i in range(1,101,2) ] #生成100以内的奇数,以空间换时间
    #l2 = ( i for i in range(1,101,2) ) #生成100以内的奇数 #
    #外面是小括号的话,它就不是一个list了,它是一个生成器,
    #生成器比list要节省内存,它是每次循环的时候,会根据规则计算一个元素,放到内存里面
    #list它是把所有的元素都放在内存里面的


    for num in red_num:
    tmp=str(num).zfill(2)
    new_num.append(tmp)

    #生成器,
    # print(new_num)
    # 1 3 5
    a = 5
    b = 4
    # c = a if a > b else b # 如果a大于b的话,c=a,否则c = b ,如果不用三元运算符的话,就得下面这么写
    if a > b:
    c = a
    else:
    c = b

    c = a if a > b else b #三元表达式

    import xlwt

    book = xlwt.Workbook() #新建一个excel
    sheet = book.add_sheet('sheet1')#加sheet页
    sheet.write(0,0,'姓名')#行、列、写入的内容
    sheet.write(0,1,'年龄')
    sheet.write(0,2,'性别')
    book.save('stu.xls')#结尾一定要用.xls
    import hashlib


    m = hashlib.md5()
    # bytes
    passwd = 'NHY_*&^_1982343532'
    # passwd.encode() #把字符串转成bytes类型
    m.update(passwd.encode()) #不能直接对字符串加密,要先把字符串转成bytes类型
    print(m.hexdigest())
    #md5加密是不可逆

    #撞库
    # befor after
    # nhy123 81fb61ce98e508df8dbe8da07ad9acfc

    def my_md5(str):
    import hashlib
    new_str = str.encode() #把字符串转成bytes类型
    # new_str = b'%s'%str #把字符串转成bytes类型
    m = hashlib.md5() #实例化md5对象
    m.update(new_str) #加密
    return m.hexdigest() #获取结果返回

    # hashlib.sha512

    d = {'a':8,'b':2,'c':3}

    #字典是无序,直接对字典排序是不存在的。
    print(d.items())
    res = sorted(d.items(),key=lambda x:x[1])
    #sort,循环调用
    # print(res)
    # for k,v in res:
    # print(k,v)
    l = [
    [1,2,3,4],
    [1,2,3,4],
    [1,2,3,4],
    [1,2,3,4],
    [1,2,3,4]

    ]
    # for a,b,c,d in l:
    # print(d)

    def my(name:str):
    print(name)

    import os
    #对操作系统的一些操作
    # print(os.getcwd())#取当前工作目录
    # os.chmod("x.py",2)#给文件/目录加权限,对Windows的下面不好使
    # 1 执行
    # 2 写
    # 4 读
    # #chmod
    # print(os.chdir("../day5"))#更改当前目录
    # print(os.getcwd())
    #
    # print(os.makedirs("nhy/python"))#递归创建文件夹,父目录不存在时创建父目录
    # print(os.mkdir("zll/huangrong"))#创建文件夹
    #makedirs 创建文件夹的时候,如果父目录不存在会自动帮你创建父目录
    # print(os.removedirs("nhy/python"))#递归删除空目录
    # print(os.rmdir("test2"))#删除指定的文件夹
    #只能删除空目录
    # os.remove("test2")#只能删除文件
    # os.rmdir('test2') #只能删文件夹


    # print(os.listdir('e:\'))#列出一个目录下的所有文件

    # os.rename("test","test1")#重命名
    # print(os.stat("x.py"))#获取文件信息

    print(os.sep)#当前操作系统的路径分隔符 #

    # day5+os.sep+x.py
    # print(os.linesep)#当前操作系统的换行符
    #
    # print(os.pathsep)#当前系统的环境变量中每个路径的分隔符,linux是:,windows是;
    # print(os.environ)#当前系统的环境变量
    # print(os.name)#当前系统名称 Windows系统都是nt linux都是posix
    # res = os.system('ipconfig') #执行操作系统命令的,但是获取不到结果
    #res = os.popen('ipconfig').read() #可以获取到命令执行的结果
    # __file__ #获取到当前文件的绝对路径
    # print(os.path.abspath(__file__))#获取绝对路径
    # print(os.path.split("/usr/hehe/hehe.txt"))#分割路径和文件名

    # print(os.path.dirname("e:\syz\ly-code"))#获取父目录,获取它的上一级目录
    # print(os.path.basename("e:\syz\ly-code\a.txt"))#获取最后一级,如果是文件显示文件名,如果是目录显示目录名
    # print(os.path.exists(r"E:syzly-codeday6"))#目录/文件是否存在
    # print(os.path.isabs("../day5"))#判断是否是绝对路径
    # print(os.path.isfile("xiaohei.py"))
    #判断是否是一个文件,1、文件要存在2、必须是一个文件
    # print(os.path.isdir("e:\syz1"))#是否是一个路径,目录是否存在
    size = os.path.getsize('x.py') #获取文件的大小
    #不能超过2m
    # print(size)

    # print(os.path.join("root",'hehe','mysql','a.sql'))#拼接成一个路径

    # for abs_path,dir,file in os.walk(r'E:syzly-codeday6'): #获取目录下内容 os.listdir()
    # #
    # print(abs_path,dir,file)
    # abs_path 当前循环的绝对路径
    # dir 目录下面所有的文件夹 [ ]
    # file 目录下面的所有文件 []

    #1、常用的模块 os,sys,time,datetime、hashlib
    #2、怎么导入其他目录下的模块

    #3、操作数据库
    import sys
    # print(sys.platform) #判断操作系统
    # #python的环境变量
    # sys.path.append(r'E:syzly-codeday5')
    # sys.path.insert(0,r'E:syzly-codeday5')
    # print(sys.path)

    # import nhy
    # nhy.my()
    # print(nhy.name)
    # import nhy
    # nhy.my()
    # print(nhy.name)

    print(sys.argv) #用来获取命令行里面运行python文件的时候传入的参数
    
    
    import pymysql
    # 1、连上数据库 账号、密码 ip 端口号 数据库
    #2、建立游标
    #3、执行sql
    #4 、获取结果
    # 5、关闭游标
    #6、连接关闭
    coon = pymysql.connect(
    host='118.24.3.40',user='jxz',passwd='123456',
    port=3306,db='jxz',charset='utf8'
    #port必须写int类型,
    #charset这里必须写utf8
    )
    cur = coon.cursor() #建立游标
    # cur.execute('select * from stu;')#执行sql语句
    cur.execute('insert into stu (id,name,sex) VALUE (1,"牛寒阳","女");')
    # delete update insert
    coon.commit() #必须得coomit
    res = cur.fetchall() #获取所有返回的结果
    print(res)
    cur.close()#关闭游标
    coon.close()#关闭连接
    
    
    import time

    #1、时间戳 从unix元年到现在过了多少秒
    #2、格式化好的时间

    #先转成时间元组

    # print(time.time()) #获取当前时间戳
    # time.sleep(10)
    today = time.strftime('%Y%m%d%H%M%S')
    # print(today)

    # print(time.gmtime()) #默认取的是标准时区的时间
    s=time.localtime(1514198608) #取到的是当前时区的时间
    # print(time.strftime('%Y-%m-%d %H:%M:%S',s))
    #时间戳转换时间元组
    # 1、时间戳转成时间元组 time.localtime()
    # 2、再把时间元组转成格式化的时间
    def timestamp_to_fomat(timestamp=None,format='%Y-%m-%d %H:%M:%S'):
    #1、默认返回当前格式化好的时间
    #2、传入时间戳的话,把时间戳转换成格式化好的时间,返回
    if timestamp:
    time_tuple = time.localtime(timestamp)
    res = time.strftime(format,time_tuple)
    else:
    res = time.strftime(format) #默认取当前时间
    return res

    # 2018-4-21
    # tp = time.strptime('2018-4-21','%Y-%m-%d') #把格式化好的时间转成时间元组的
    # print(time.mktime(tp)) #把时间元组转成时间戳
    def strToTimestamp(str=None,format='%Y%m%d%H%M%S'):
    # 20180421165643
    #默认返回当前时间戳
    if str: #如果传了时间的话
    tp = time.strptime(str,format) #格式化好的时间,转成时间元组
    res = time.mktime(tp)#再转成时间戳
    else:
    res = time.time() #默认取当前的时间戳
    return int(res)

    import datetime
    print(datetime.datetime.today()) #获取当前时间,精确到秒
    print(datetime.date.today()) #精确到天
    res = datetime.datetime.today()+datetime.timedelta(days=1,minutes=5,seconds=5,weeks=5)
    print(res.strftime('%Y-%m-%d'))
    
    
    上周回顾
    函数
    1、简化代码
    2、提高代码的复用性
    def func(name,sex='男',*args,**kwargs): #形参
    today = '20180421'
    retrun today

    func('小黑') #实参
    没有写返回值的话返回None
    retrun
    1、返回函数处理的结果
    2、结束函数
    常量:
    全都是大写字母来定义
    PORT
    局部变量
    全局变量
    如果要在函数里面修改全局变量的话,要先用global声明
    global name
    内置函数
    len()
    type()
    id()
    max()
    dir(name)
    sorted()
    open()
    round(1,11)
    range(1,19) #[1,18]


    模块
    1、pip install xpinyin #pip python3.4以上的版本是自带的
    2、
    xpinyin.tar.gz
    python setup.py install
    xpinyin.whl
    pip install xpinyin.whl
    标准模块
    1、python自带的,import random,json,os
    2、第三方模块
    3、自己写的python文件

    函数返回多个值:
    1、函数如果返回多个值的话,它会把这几个值放到一个元组里面
    2、函数如果返回多个值的话,也可以用多个变量来接收


    new_num = [ str(num).zfill(2) for num in red_num ] #列表生成式
    l = [ i for i in range(1,101,2) ] #生成100以内的奇数,以空间换时间
    #l2 = ( i for i in range(1,101,2) ) #生成100以内的奇数 #
    #外面是小括号的话,它就不是一个list了,它是一个生成器,
    #生成器比list要节省内存,它是每次循环的时候,会根据规则计算一个元素,放到内存里面
    #list它是把所有的元素都放在内存里面的

    lambda
    匿名函数
    lambda x: x+1 #冒号后面的是函数体,也是函数的处理逻辑,冒号前面的返回值
    常用的标准模块
    os模块:
    os.listdir('e:\') #列出目录下所有的文件和文件夹
    os.remove() #删除文件
    os.rename(old,new) #重命名
    print(os.sep)#当前操作系统的路径分隔符 #
    # res = os.system('ipconfig') #执行操作系统命令的,但是获取不到结果
    #res = os.popen('ipconfig').read() #可以获取到命令执行的结果
    # print(os.path.abspath(__file__))#获取绝对路径
    #print(os.path.dirname("e:\syz\ly-code"))#获取父目录,获取它的上一级目录
    # print(os.path.exists(r"E:syzly-codeday6")) #判断文件或者目录是否存在
    print(os.path.isfile("xiaohei.py"))
    #判断是否是一个文件,1、文件要存在2、必须是一个文件
    print(os.path.isdir("e:\syz1"))#是否是一个路径,目录是否存在
    size = os.path.getsize('x.py') #获取文件的大小
    os.path.join("root",'hehe','mysql','a.sql') #拼接路径
    for abs_path,dir,file in os.walk(r'e: hy'):
    print(abs_path,dir,file)
    # abs_path 当前循环的绝对路径
    # dir 目录下面所有的文件夹 [ ]
    # file 目录下面的所有文件 []

    python导入模块的时候的顺序:
    1、从当前目录下找需要导入的python文件
    2、从python的环境变量中找 sys.path

    导入模块的实质:
    就是这这个python文件从头到尾执行一遍

    import nhy
    nhy.my()
    print(nhy.name)

    from nhy import my,name,
    my()
    print(name)

    两种方式是一样的
    sys.argv
    用来获取命令行里面运行python文件的时候传入的参数,它是一个list
    这个list默认就有一个参数,就是当前这个文件名


    作业:
    1、logs目录下,有一部分文件是空的
    1、删除log目录下,所有的空文件
    2、删除5天前的文件
    2、写代码实现,把我的数据库里面的stu表中的数据,导出到excel中
    #编号 名字 性别
    3、 注册
    登录
    数据都存在数据库里面
    id username passwd
    注册的时候,密码存的是加密之后的密码
    username pwd cpwd,都是必填的
    用户不能重复
    登录
    账号
    密码
    登录成功之后打印当前的日期
  • 相关阅读:
    洛谷 P3808 【模板】AC自动机(简单版) 题解
    O3优化模板
    洛谷 P3909 异或之积 题解
    洛谷 P3870 [TJOI2009]开关 题解
    洛谷 P1891 疯狂LCM 题解
    洛谷 P5221 Product 题解
    洛谷 P2568 GCD 题解
    洛谷 P5639 【CSGRound2】守序者的尊严 题解
    扩展kmp板子
    [JZOJ3167] 【GDOI2013模拟3】查税
  • 原文地址:https://www.cnblogs.com/yihan2018/p/8987123.html
Copyright © 2011-2022 走看看