本章内容:
文件打开方式
文件内容读取
文件内容写入
文件扩展用法
01:文件打开方式
open函数
file_object = open(file_name, access_mode='r')
默认是读的模式
file_name
文件路径:相对路径和绝对路径
access_mode
读
写
读+写
文件的相对路径
如果进程操作文件,不是全路径
open(‘file1.txt’)
open(‘fold/file1.txt’)
open('../file1.txt')
../../表示上级目录的上级目录,以此类推
相对于当前目录来寻找该文件
称之为相对路径
02:文件内容读取
文件模式--r
只是为了读取文件而打开文件。文件指针在文件的开头,这也是缺省的文件打开方式
open(‘file1’)==open(‘file1’,‘r’)
fo.read()
注意文件指针的移动,最后的关闭操作
有具体的读的长度,就读具体个数
fh.read(2)
没有具体读的长度,就读全部
fh.read()
读操作-如果文件不存在,会报错
文件关闭
fo.close()
文件指针
03:文件读取一行内容
04:文件内容写入
文件写操作--如果不存在-会新建,文件存在-会清空所有内容
使用场景:输出本次使用的详细信息
fileDir = ‘G:\pyTest.txt’
fo.open(fileDir,'w')
#写操作
05:追加模式--a
只是为了在文件末尾追加内容而打开文件
如果文件存在,文件指针在文件的结尾
如果文件不存在,则创建一个文件
文件扩展用法
with open()用法
with语句会在其代码块执行完毕之后自动关闭文件
先一次性读取所有行到内存,然后再遍历打印
with open('song.txt', 'r', encoding='utf-8') as f:
for line in f.readlines():
print(line)
这种方式的缺点与read()方法是一样的,都是会消耗大量的内存空间
with open('song.txt', 'r', encoding='utf-8', newline='') as f:
for line in f:
print(line)
作业:
01:请定义一个函数 mySort,参数为一个列表,参数列表中的元素都是整数.
mySort 函数需要将参数列表中的元素按从小到大排序,最终返回一个新的list。
请按下面算法的思路实现函数:
1. 创建一个新的列表newList
2. 先找出所有元素中最小的,append在newList里面
3. 再找出剩余的所有元素中最小的,append在newList里面
4. 依次类推,直到所有的元素都放到newList里面
02:现有文件1(如下,请保存到文件file1.txt中), 记录了公司员工的薪资,其内容格式如下
name: Jack ; salary: 12000
name :Mike ; salary: 12300
name: Luk ; salary: 10030
name :Tim ; salary: 9000
name: John ; salary: 12000
name: Lisa ; salary: 11000
每个员工一行,记录了员工的姓名和薪资,
每行记录 原始文件中并不对齐,中间有或多或少的空格
现要求实现一个python程序,计算出所有员工的税后工资(薪资的90%)和扣税明细,
以如下格式存入新的文件 file2.txt中,如下所示
name: Jack ; salary: 12000 ; tax: 1200 ; income: 10800
name: Mike ; salary: 12300 ; tax: 1230 ; income: 11070
name: Luk ; salary: 10030 ; tax: 1003 ; income: 9027
name: Tim ; salary: 9000 ; tax: 900 ; income: 8100
name: John ; salary: 12000 ; tax: 1200 ; income: 10800
name: Lisa ; salary: 11000 ; tax: 1100 ; income: 9900
要求像上面一样的对齐
tax 表示扣税金额和 income表示实际收入。注意扣税金额和 实际收入要取整数