10:文件的读写

本章内容:

文件打开方式

文件内容读取

文件内容写入

文件扩展用法

 

01:文件打开方式

open函数

file_object = open(file_name, access_mode='r')

默认是读的模式

file_name

文件路径:相对路径和绝对路径

access_mode

读+写

image.png

文件的相对路径

如果进程操作文件,不是全路径

open(‘file1.txt’)

open(‘fold/file1.txt’)

open('../file1.txt')

../../表示上级目录的上级目录,以此类推

相对于当前目录来寻找该文件

称之为相对路径

 

02:文件内容读取

文件模式--r

只是为了读取文件而打开文件。文件指针在文件的开头,这也是缺省的文件打开方式

open(‘file1’)==open(‘file1’,‘r’)

 

fo.read()

注意文件指针的移动,最后的关闭操作

有具体的读的长度,就读具体个数

fh.read(2)

没有具体读的长度,就读全部

fh.read()

读操作-如果文件不存在,会报错

image.png

文件关闭

fo.close()

 

文件指针

image.png

03:文件读取一行内容

image.png

04:文件内容写入

文件写操作--如果不存在-会新建,文件存在-会清空所有内容

使用场景:输出本次使用的详细信息

fileDir = ‘G:\\pyTest.txt’

fo.open(fileDir,'w')

 

#写操作

image.png

05:追加模式--a

只是为了在文件末尾追加内容而打开文件

如果文件存在,文件指针在文件的结尾

如果文件不存在,则创建一个文件

image.png

文件扩展用法

image.png

with open()用法

with语句会在其代码块执行完毕之后自动关闭文件

image.png

先一次性读取所有行到内存,然后再遍历打印

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里面 

image.png

 

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表示实际收入。注意扣税金额和 实际收入要取整数  

image.png

posted @ 2020-08-04 16:52  kelly-凯莉  阅读(373)  评论(0编辑  收藏  举报