python入门之排序,文件操作

排序

  li.sort()  对li列表从小到大排序,直接更新li列表

  sorted(li)  返回一个li排序后的列表,并非直接对li作更新

  列表元素必须是同一种数据类型

文件操作

  打开文件:

    f = open(文件名,模式,编码)

      以某种方式某种编码打开某文件,会返回一个对象(文件名最好写绝对路径,默认只读模式r)

      模式:  

r     只读,默认。读取的是字节,默认以utf-8编码转换成字符串,所以取得的是字符串,也可以自己设置编码。有中文的话可能要设置utf-8
w     只写,不可读。文件不存在则自动创建,文件存在则会自动把文件清空,只要以只写打开,就会清空文件。
x     只写,不可读。文件不存在则自动创建,文件存在直接报错
a     追加,不可读。文件不存在则自动创建,文件存在则追加

rb    只读。读取的是字节,取得的数据也是字节。不用设置编码
wb    只写。写入字节,写入的话,必须将写入的字符串转换为字节,然后再写入
xb    同上
ab    同上

r+    读写。读文件read(),会有一个指针,第一次读,指针在第一行行首,读完之后指针会移到最后(读到哪儿,指针移到哪儿),每次读都是读的指针以后的数据,这时写入数据,指针依然往后排,这时读取的话,是空的。不管开始指针的位置在哪儿,只要写入,那么只能追加在最后,指针也会移到最后(r+的写是追加在末尾)
w+    写读。打开文件时已先清空文件,然后再写,接着再读,读的是刚才写的数据,但是写了之后,指针跑到末尾了,所以在读之前需要调整指针的位置
x+    写读。和w+差不多,只是如果文件存在,则会报错
a+    写读。打开文件的同时,已经将指针移到最后了

r+b   以二进制读写
w+b
x+b
a+b

  

  指针操作:

    f.tell()  返回指针的位置,为0表示起始位置,返回的数字是按字节排的,指针在第多少个字节后就是返回值。返回3,表示在第一个汉字之后。

    f.seek(0)  将指针移到起始位置,也可以移动到其他位置,根据里面传的数字

  

  读取、关闭文件:

data = f.read()    读取文件,默认全部读取,加参数数字,就读取多少个字符
f.close()          如果不执行这条关闭,当代码写入数据后,程序还没执行完,再重新修改文件内容,那么其他程序来读取文件时就读的是后面修改后的内容,然后程序执行完后,再去读取文件,读取的是开始写入的内容(因为程序没终止,写入的内容还在内存里,当程序终止了就写入文件里了)
f.flush()          刷新文件内部缓冲区。当写入数据时,是写在内存里的,在程序执行完后才写入文件里,而这个函数是将内存里的数据直接加载写到文件里,即使程序还在运行当中

f.readline()       仅读取一行数据
f.truncate()       截取指针前的数据,后面的都删掉

for line in f:
    print(line)
                   一行一行的读取所有数据,这样避免文件太大,导致内存不足

with open("filename","r") as f:
    f.read()
                   不用close,会自动close

with open("file1") as f1,open("file2") as f2:
    pass
                   同时打开两个文件(这个功能在2.7及2.7以后版本才有)
作用:拷贝一个很大很占内存的文件到另一个文件,一般都是把这个文件先放到内存里,然后再拷到另一个文件。用with同时打开两个文件,一个为源文件,以只读打开,另一个新文件,以只写打开,这样就可以一行一行的从源文件拷到新文件里
拷贝过程:
for line in f1:
    f2.write(line)
原文地址:https://www.cnblogs.com/chy-op/p/9873656.html