• python杂记二


    1. 写文件可以直接使用print函数

    file_name = open("file_name.txt","w")
    
    print("file contain.",file = file_name)
    
    file_name.close()

    2. 判断一个文件有没有打开

    可以判断文件变量有没有被定义,即有没有在locals()返回的集合中

    try:
        file_name = open("file_name","r")
    except IOError:
        print("File eror")
    finally:
        if 'file_name' in locals():
            file_name.close()

    3. 使用with语句就不再需要包含一个finally组来处理文件的关闭,python解释器会自动考虑这一点

    打开多个文件时,中间用逗号分隔

    try:
        with open("file_name1","w") as file_name1, open("file_name2","w") as file_name2:
            print("file1 contain.",file = file_name1)
            print("file2 contain.", file = file_name2)
    except IOError:
        print("File eror")

    4. print默认输出的位置是sys.stdout,即屏幕,其在sys模块中定义。file参数可以改变输出位置,比如输出到文件。

    print函数的默认签名为 print(value, sep=' ', end=' ', file=sys.stdout)

    5. python提供了一个标准库,名为pickle,可以保存和加载几乎任何python数据对象

    需要导入所需要的模块,然后使用dump()保存数据,以后某个时间使用load()恢复数据。惟一的要求就是必须以二进制访问模式打开这些文件,如果出了问题,pickle模块会产生一个PickleError。

    import pickle
    try:
        with open("file_name","wb") as file_name:
            pickle.dump([1,2,3], file_name)
        with open("file_name2", "rb") as file_name2:
            temp_list = pickle.load(file_name2)
    except IOError as err:
        print("File eror: " + str(err))
    except pickle.PickleError as perr:
        print("Pickling error: " + str(perr))


    6. 对于列表,sort()方法提供原地排序,sorted()方法提供复制排序,使用方法略有不同,如下

    data.sort()      sorted(data)

    两个方法默认升序,降序的话,要传入参数reverse=True

    7. glob模块可以向操作系统查询一个文件名列表

    import glob
    data_files = glob.glob("data/*.txt")

    8. python提供了自己的web服务器,这个web服务器包含在http.server库模块中。

    构建一个web服务器要有这5行代码

    # 导入HTTP服务器和CGI模块
    from http.server import HTTPServer, CGIHTTPRequestHandler
    # 指定一个接口
    port = 8080
    # 创建一个HTTP服务器
    httpd = HTTPServer(('',port),CGIHTTPRequestHandler)
    print("Starting simple_httpd on port: " + str(httpd.server_port))
    httpd.serve_forever()


    9. python的CGI模块可以用来访问表单数据

    import cgi
    # 获取所有表单数据并放在一个字典中
    form_data = cgi.FieldStorage()


    10. python的标准库提供了一个CGI跟踪模块:cgitb,启用这个模块时,会在web浏览器上显示详细的错误消息。这些消息可以帮助你找出CGI中哪里出了问题,改正错误而且CGI正常工作后中,再关掉CGI跟踪

    import cgitb
    cgitb.enable()

    11. python3 预装了SQLite3,要使用SQLite,只需要导入sqlite3库,燕使用Python的标准化数据库API来编程

    # 导入sqlite3库
    import sqlite3
    # 建立与数据库的连接
    connection = sqlite3.connect('test.sqlite')
    # 创建游标
    cursor = connection.cursor()
    # 建表
    cursor.execute("""CREATE TABLE students(
                        id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,
                        name TEXT NOT NULL,
                        dob DATE NOT NULL)""")
    cursor.execute("""CREATE TABLE score(
                        student_id INTEGER NOT NULL,
                        value TEXT NOT NULL,
                        FOREIGN KEY (student_id) REFERENCES students)""")
    connection.commit()
    cursor.execute("INSERT INTO students (name,dob) VALUES (?,?)",(name,dob))
    connection.commit()
    cursor.execute("SELECT id from students WHERE name=? AND dob=?",(name,dob))
    cursor.execute("SELECT value FROM score WHERE student_id=?",(student_id,))
    # 游标方法返回的都是数据行列表
    # 返回下一个数据行
    cursor.fetchone()
    # 返回多个数据行
    cursor.fetchmany()
    # 返回所有数据
    cursor.fetchall()
    connection.close()

    12. os库可以查询系统环境变量

    import os
    os.environ['path']

    13. python在函数中对直接使用全局变量时,会查找同名的局部变量,找不到就会报UnboundLocalError异常。要在函数里修改一个全局变量时,要在函数里global + 变量名进行声明。

    sayhi = 'hello'
    def what_to_say():
        global sayhi
        print(sayhi)
        sayhi = 'bey-bey'
        print(sayhi)

    14. dict中字符串为utf-8编码,输出中文

    import json
    print json.dumps(dict, encoding="UTF-8", ensure_ascii=False)

    15. ImportError: cannot import name 'create_prompt_application'

    运行jupyter出现过这个错误提示

    代码无法运行

    服务器无法连接

    原因:prompt-toolkit版本不对

    解决方法:安装符合要求的版本,如pip3 install prompt-toolkit==1.0.15

  • 相关阅读:
    bzoj 2442: [Usaco2011 Open]修剪草坪【单调栈】
    bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级【分层图+spfa】
    bzoj 1646: [Usaco2007 Open]Catch That Cow 抓住那只牛【bfs】
    bzoj 1677: [Usaco2005 Jan]Sumsets 求和【dp】
    bzoj 1657: [Usaco2006 Mar]Mooo 奶牛的歌声【单调栈】
    洛谷 P4180 【模板】严格次小生成树[BJWC2010]【次小生成树】
    bzoj 1660: [Usaco2006 Nov]Bad Hair Day 乱发节【单调栈】
    bzoj 1726: [Usaco2006 Nov]Roadblocks第二短路【dijskstra】
    bzoj 1631: [Usaco2007 Feb]Cow Party【spfa】
    bzoj 1669: [Usaco2006 Oct]Hungry Cows饥饿的奶牛【dp+树状数组+hash】
  • 原文地址:https://www.cnblogs.com/zhaoshizi/p/9975550.html
Copyright © 2020-2023  润新知