python入门之排序,文件操作
2024-08-30 09:52:16
排序
li.sort() 对li列表从小到大排序,直接更新li列表
sorted(li) 返回一个li排序后的列表,并非直接对li作更新
列表元素必须是同一种数据类型
文件操作
打开文件:
f = open(文件名,模式,编码)
以某种方式某种编码打开某文件,会返回一个对象(文件名最好写绝对路径,默认只读模式r)
模式:
r 只读,默认。读取的是字节,默认以utf-8编码转换成字符串,所以取得的是字符串,也可以自己设置编码。有中文的话可能要设置utf-
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)
最新文章
- NFC读写实例
- Windows Server 2012 R2在线安装.NET Framework3.5
- AC日记——校门外的树(增强版) 洛谷 P1276
- java beans
- hbase region 分配方式
- [iOS开发]TextKit之动态改变样式
- c#获取数组中最大的元素
- codeforces A. Orchestra B. Island Puzzle
- Go终端读写
- 详解AMD规范及具体实现requireJS在工程中的使用
- UOJ277【清华集训2016】定向越野(计算几何,最短路)
- cf1144E 假高精度平均数
- 28.OGNL与ValueStack(VS)-总结$ # %的区别
- linux / centos 安装SQL Server 2017 设置默认语言与排序规则Chinese_PRC_CI_AS
- Maven学习(十)-----使用Maven创建Java项目
- 每日英语:Do Successful People Need Sleep?
- 股神 C++
- luogu P1979 华容道
- Web服务器父与子 Apache和Tomcat
- ajax_基础