zoukankan      html  css  js  c++  java
  • python的内置排序方法+文件操作

    li = [22,34,2,11]
    print (li)
    li.sort()
    print (li)

    或者直接

    new = sorted(li)
    print (new)

    字符串和数字不能放在一起排序,全是数字按照数字大小排序。如果是字符串,分三类,数字优先于字母优先于中文,字符码排序,从前往后拍,最大位要是小就放在前面,如果相同比下面的一位。

    文件操作:

    一,打开文件

    二,操作文件

    三,关闭文件

    open(文件名,模式,以什么编码)

    我创建了一个'ha.log'文件

    f = open('ha.log')
    data = f.read()
    f.close()
    print (data)

    一、打开文件

    1
    文件句柄 = open('文件路径''模式')

    打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。

    打开文件的模式有:

    • r ,只读模式【默认】
    • w,只写模式【不可读;不存在则创建;存在则清空内容;】(写内容是从头开始写,先清空)
    • x, 只写模式【不可读;不存在则创建,存在则报错】
    • a, 追加模式【不可读;   不存在则创建;存在则只追加内容;】

    如何以字节的形式读取文件?

    f = open("ha.log","r")
    data = f.read()
    f.close()
    b = byte(data,coding = "utf-8")
    print (b)

    同理写也一样可以做到

    打开文件 python默认以字节码(二进制)形式打开,但是默认做了编码处理,转换成了字符串。所以二进制方式打开(rb)不需要设置编码

    但是以普通方式只读的话,一开始是二进制文件,需要指出用什么编码(不设置默认为utf-8)。

    "+" 表示可以同时读写某个文件

    • r+, 读写【可读,可写】
    • w+,写读【可读,可写】
    • x+ ,写读【可读,可写】
    • a+, 写读【可读,可写】

     "b"表示以字节的方式操作

    • rb  或 r+b
    • wb 或 w+b
    • xb 或 w+b
    • ab 或 a+b

     注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型

     程序员如何通过字节自己转换成字符串?

    str_data = str(data,encoding = "utf-8")

    print (str_data)

    以上操作,平时日常只会用r/w/a (不会加b)

    r/w/x/a ->产出和写入 都是字符串类型

    rb/wb/xb/ab  ->产出和写入都是二进制类型

    利用指针了解模式特性以及过程 

     如何得知read光标的位置?(指针为0为起始位置)

    print (f.tell())

    可以通过给定read()参数去设定具体“读”多少字符(如果有rb则是字节)。

    data = f.read(1)
    print (data)
    print (f.tell())

    如果读到中间的时候,调用write()写进内容,指针就会被调至最后。(写的时候永远是从最后写)。

    对于r+:写入的时候,在末尾追加写入。同时指针在最后。

    f = open('ha.loh','r+',encoding = 'utf-8')

    对于w+: 先清空,写之后再读,这个时候指针再最后。也读不出来,要调整指着。(seek(0))

    f = open('ha.log','w+',encoding = 'utf-8')
    data = f.read()
    print (data)

    反馈是空值。因为w+是先写再读。但是先写,会清空文件,所以data才是空。

    正确的具体操作如下:

    f = open('ha.log','w+',encoding = 'uft-8')
    f.write('何丽丽')
    f.seek(0)
    data = f.read()
    f.close()
    print (data)

    对于x+(与w+一样,但是如果只用来做判断文件是否存在,如果文件存在,就会报错 )。

    对于a+。

    f = open('ha.log','a+',encoding = 'uft-8')

    data = f.read()

    f.close()

    print (data)

    输出为空值。因为a是append追加,使用的同时就把指针移动到末尾了。

    一些指针操作:

    f.seek()改变指针的位置

    f.tell()获取指针的位置 

     操作:

    3.X
    2.x
    f.flush()使RAM里面的内容执行写入ROM。
    f.read()读取所有的内容。(加上一个参数,指定读取的量)。
    f.readline()读取一行的内容。
    f.truncate()截取的意思(指针所在处截取指针以前的内容。)truncate功能依赖于指针。
    读取所有行的数据:
    for line in f:
        print (line)

     python代码自动关闭的程序:

    with open (xxx,'r') as f:
        f.read()

    以上不用close了,自动帮助close。

    在python2.7之后。with操作支持同时打开两个文件。比如:

    with open (xxx,'r') as obj1, open (xxx,'r') as obj2:
        pass

    最后都是with帮助关闭。

    如何转移文件?一行一行读文件,同时一行一行的写入到另一个文件?

    with open('源文件','r') as obj1, open('新文件','w') as obj2:
        for line in obj1:
        obj2.write(line)

    实现读一行写一行。减少内存的消耗。因为open不会进入ram

  • 相关阅读:
    hibernate-取消关联外键引用数据丢失抛异常的设置@NotFound
    css-画三角箭头
    tomcat提示警告: An attempt was made to authenticate the locked user"tomcat"
    liunx下tomcat启动 Cannot find ./catalina.sh
    java:提示Could not initialize class sun.awt.X11GraphicsEnvironment
    MySQL定时器开启、调用实现代码
    mysql-存储过程案例-存储过程中创建表和修改表数据
    PowerDesigner导出SQL时自动生成注释
    mysql-利润set变量模拟分组查询每组中的第N条数据
    HTTP 405 错误 – 方法不被允许 (Method not allowed)
  • 原文地址:https://www.cnblogs.com/cmpunk/p/7604284.html
Copyright © 2011-2022 走看看