zoukankan      html  css  js  c++  java
  • python技巧及相关错误

    文件:

    打开文件时,如果报错提示GBK,可能是文件内容的编码问题,可以打开时加上参数:
    open(filename=path,encoding=None)

    -------------------------------------------------------------------------------------------
    序列:

    列表、元组和字典均可以使用索引的方式来获取值,列表和元组得到的是索引值,而字典得到则是Key。
    dict1.setdefault(x,y)------追加到字典

    以下两句同一个意思,返回同一个结果:
    for i in dict1
    for i in dict1.keys()

    --------------------------------------------------------------------------------------------
    字符:

    字符的方法
    str.splitext()-----按后面参数进行分割
    如 a= '1:2'
    a.splitext(':')得到的是一个元组(1,2)


    \n 换行
    \b 退格
    \a 发出系统响铃声


    \t 横向制表符
    \v 纵向制表符
    \r 回车
    \f 换页
    \o 八进制
    \x 十六进制
    \0 表示一个空格
    \\ 反斜杠


    字符操作方法:
    isalpha() 判断是否为字符
    isdigit() 判断是否为数字
    upper() 转换为大写
    lower() 转换为小写
    capitalize() 字符串首个字母大写
    title() 将首个大写以下空格或标点后的首个字符大写
    strip() 可删除字符串前后的空格,也可删除指定的字符
    spilt()可用参数来进行切片操作
    如: 2:3
    a,b = spilt(2:3)
    a
    2
    b
    3


    >>> str1
    ' ***skdfj*** '
    >>> str1 = str1.strip()
    '***skdfj***'
    >>> str1 = str1.strip('*')
    'skdfj'
    lstrip() 删除左边的空格或字符
    rstrip() 删除右边的空格或字符

    count() 统计字符串出现有次数
    find() 查找字符串出现的位置
    replace() 替换字符串


    --------------------------------------------------------------------------------------------
    错误:

    只有当条件错误时,才输入底下的内容
    try:
    条件:
    except:
    输入内容
    在Try中可用raise 返回一个错误的名称,执行后面的except语句

    raise 错误名称可产生一个错误名,此名称Python须存在
    raise KeyboardInterrupt

    ---------------------------------------------------------------------------------------------
    格式化:

    格式化小数位数有两种方法:---这里2f前必须加小点才可以,否则会返回错误的值。
    a = 3.1415926
    print('this is {0:.2f}'.format(a))
    print('this is %.2f' % a)

    >>> numbers = [ 10,30,3,0,100]
    >>> for number in numbers:
    if number == 0:
    print('这是0,不能除,否则会错误')
    newnum = 100 / number
    print(('100/{} = {}).format(number,newnum))

    SyntaxError: EOL while scanning string literal
    >>> for number in numbers:
    if number == 0:
    print('这是0,不能除,否则会错误')
    newnum = 100 / number
    print(('100/{} = {}').format(number,newnum))

    100/10 = 10.0
    100/30 = 3.3333333333333335
    100/3 = 33.333333333333336
    这是0,不能除,否则会错误
    Traceback (most recent call last):
    File "<pyshell#59>", line 4, in <module>
    newnum = 100 / number
    ZeroDivisionError: division by zero
    >>> for number in numbers:
    if number == 0:
    print('这是0,不能除,否则会错误')
    continue
    newnum = 100 / number
    print(('100/{} = {}').format(number,newnum))

    100/10 = 10.0
    100/30 = 3.3333333333333335
    100/3 = 33.333333333333336
    这是0,不能除,否则会错误
    100/100 = 1.0
    >>>


    ------------------------------------------------------------------------------------------------
    函数:

    16课的Main()函数
    列表的reverse() 返回是None,reversed(list)是可以正常返回的


    locals()---指当前目录

    列表正常通过POP是弹出最后一个,如果想要用先进先出,可用以下函数:
    from collections import deque
    deque.left()弹出最左边的

    -------------------------------------------------------------------------------------------------
    35课 EasyGui总结

    按钮:
    msgbox()-----消息对话,返回按钮值
    ccbox() ynbox()-------按钮1返回1,按钮2返回0
    buttonbox()-----多个按钮,返回按钮名称值
    indexbox()-------按钮1返回0,按钮2返回1
    bootbox()---------------按钮1返回1,按钮2返回0


    选项:
    choicebox()--------单选
    multchoicebox()------多选

    消息输入:
    enterbox()-------消息输入,返回输入的信息
    integetbox()-------数字输入,非数字重新输入
    multenterbox()-------多个消息输入,返回一个List

    密码输入:
    passwordbox()------密码输入,返回密码字符串
    multpasswordbox()------多个输入,最后一个显示星号
    textbox()

    目录文件:
    diropenbox()-------目录打开,显示目录路径
    fileopenbox()---------文件打开,显示文件路径
    filesavebox()---------文件保存,显示文件路径

    捕获异常:
    exceptionbox()----------捕获异常信息,返回窗口

    -----------------------------------------------------------------------------------------------
    模块chardet

    用于检测目标网页的编码

    可通过easy_install 或 pip方式安装
    cmd: easy_install chardet

    chardet.detect(html)----得到的是一个字典,这里html必须已read过
    chardet.detect(res.read())
    {'encoding': 'GB2312', 'confidence': 0.99}

    可通过Key的方式得到编码:
    >>> (chardet.detect(res.read()))['encoding']
    'GB2312'


    -----------------------------------------------------------------------------------------------
    模块shutil

    用于文件操作,移动

    目录操作:
    os.mkdir("file")
    创建目录

    复制文件:
    shutil.copyfile("oldfile","newfile")
    oldfile和newfile都只能是文件

    shutil.copy("oldfile","newfile")
    oldfile只能是文件夹,newfile可以是文件,也可以是目标目录

    复制文件夹:
    shutil.copytree("olddir","newdir")
    olddir和newdir都只能是目录,且newdir必须不存在

    重命名文件(目录)
    os.rename("oldname","newname")
    文件或目录都是使用这条命令

    移动文件(目录)
    shutil.move("oldpos","newpos")
    oldpos 可以是文件
    newpos 是目录

    删除文件
    os.remove("file")

    删除目录
    os.rmdir("dir")只能删除空目录

    shutil.rmtree("dir")
    空目录、有内容的目录都可以删

    转换目录
    os.chdir("path") 换路径


    os模块调用系统shell有以下方法:
    os.system(cmd)
    os.popen(cmd)
    还可以使用subprocess模块
    subprocess.call(cmd)

     

    -----------------------------------------------------------------------------------------------
    模块urllib.request

    可以用下面的命令下载图片
    urllib.request.urlretrieve(each,filename,None)

    通过Findall得到子组里的所有Img_url,是一个列表
    p = r'src="([^"]+\.jpg)'
    mglist = re.findall(p,html)

    通过迭代的方式打开每个URL
    for each in get_url():
      用字符串的split方式分离文件,取最后一个
    filename = each.split('/')[-1]
    用urlretrieve下载,不用再Open一个文件写入了
    urllib.request.urlretrieve(each,filename,None)

    列表、元组和字典均可以使用索引的方式来获取值,列表和元组得到的是索引值,而字典得到则是Key。

    dict1.setdefault(x,y)------追加到字典

    字符的方法
    str.splitext()-----按后面参数进行分割
    如 a= '1:2'
    a.splitext(':')得到的是一个元组(1,2)

     

    在Try中可用raise 返回一个错误的名称,执行后面的except语句

    格式化小数位数有两种方法:---这里2f前必须加小点才可以,否则会返回错误的值。
    a = 3.1415926
    print('this is {0:.2f}'.format(a))
    print('this is %.2f' % a)


    \n 换行
    \b 退格
    \a 发出系统响铃声


    \t 横向制表符
    \v 纵向制表符
    \r 回车
    \f 换页
    \o 八进制
    \x 十六进制
    \0 表示一个空格
    \\ 反斜杠

    for

    >>> numbers = [ 10,30,3,0,100]
    >>> for number in numbers:
    if number == 0:
    print('这是0,不能除,否则会错误')
    newnum = 100 / number
    print(('100/{} = {}).format(number,newnum))

    SyntaxError: EOL while scanning string literal
    >>> for number in numbers:
    if number == 0:
    print('这是0,不能除,否则会错误')
    newnum = 100 / number
    print(('100/{} = {}').format(number,newnum))

    100/10 = 10.0
    100/30 = 3.3333333333333335
    100/3 = 33.333333333333336
    这是0,不能除,否则会错误
    Traceback (most recent call last):
    File "<pyshell#59>", line 4, in <module>
    newnum = 100 / number
    ZeroDivisionError: division by zero
    >>> for number in numbers:
    if number == 0:
    print('这是0,不能除,否则会错误')
    continue
    newnum = 100 / number
    print(('100/{} = {}').format(number,newnum))

    100/10 = 10.0
    100/30 = 3.3333333333333335
    100/3 = 33.333333333333336
    这是0,不能除,否则会错误
    100/100 = 1.0
    >>>

    输出: 年-月-日
    date1 = time.strftime('%Y-%m-%d')

    输出: 时:分:秒
    time1 = time.strftime('%H:%M:%S')

    安装此类文件
    先安装pip install wheel
    再用pip install xxx.whl即可
    Django-1.9.8-py2.py3-none-any.whl

    Python3版本不支持MYsql,可用Pymyql,但在Django同步数据库时,需要在APP的__init__.py添加如下:
    import pymysql
    pymysql.install_as_MySQLdb()

  • 相关阅读:
    【实用】网站常用单词的中英文对照表
    [译][转]jQuery 1.4 发布:15个新特性实例精讲
    popupWindow 简单实现
    程序员修炼之道 读书笔记
    Burp Suite详细使用教程Intruder模块详解
    漏洞挖掘练习环境(linux方向)
    linux系统操作常见问题(ubuntu和opensuse)
    驱动的加载顺序
    磁盘驱动相关知识
    VS 驱动工程创建软件(EeasySyS)
  • 原文地址:https://www.cnblogs.com/syother/p/6773571.html
Copyright © 2011-2022 走看看