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

python 给中文按排序 python中文如何排序_python 给中文按排序

或者直接

new = sorted(li)
print (new)

 

 

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

 

文件操作:

一,打开文件

二,操作文件

三,关闭文件

 

 

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

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

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

一、打开文件

文件句柄 = 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()获取指针的位置 

 操作:

python 给中文按排序 python中文如何排序_字符串_02

3.X

python 给中文按排序 python中文如何排序_字符串_02

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