Python文件的基本操作
一、任务描述
本实验任务主要对Python文件进行一些基本操作,通过完成本实验任务,要求学生熟练掌握Python文件的操作,并对Python文件的基本操作进行整理并填写工作任务报告。
二、任务目标
1、掌握Python文件的基本操作
三、任务环境
Ubuntu16.04、Python2.7
四、任务分析
在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。
♥ 温馨提示 |
以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码。 |
五、任务实施
步骤1、环境准备
右击Ubuntu操作系统桌面,从弹出菜单中选择【Open in Terminal】命令 打开终端。
通过【cd /home】切换到home目录下。【ls】查看该目录下的所有内容。
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-27/5a42dea8b194c.png)
【mkdir file】在home目录下创建file文件夹。
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-27/5a42deea1f34a.png)
步骤2、输入输出
打印到屏幕,最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-27/5a42ec232ff6d.png)
raw_input([prompt]) 函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符)
回车后在请输入:后添加Hello World
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-27/5a42eca902ce5.png)
input([prompt]) 函数和 raw_input([prompt]) 函数基本类似,但是 input 可以接收一个Python表达式作为输入,并将运算结果返回。
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-27/5a42ed4741c20.png)
步骤3、文件模式
打开文件的模式有:
r,只读模式(默认)。
w,只写模式。【不可读;不存在则创建;存在则删除内容;】
a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
打开文件。
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-27/5a42f0b47dd27.png)
读文件。
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-27/5a42f1092473b.png)
写文件。使用w时事实上是创建了一个新文件,如果源文件存在,会覆盖。
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-27/5a42f751da889.png)
重启终端执行【cat /home/soft/file/file2.txt】查看添加的信息
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-27/5a42f77d1b796.png)
追加文件。
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-27/5a42f85a36e21.png)
重启终端执行【cat /home/soft/file/file2.txt】查看追加的信息
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-27/5a42f883d9852.png)
步骤4、文件对象
【readline()】读取的是文件的单行。
【close()】关闭文件
使用for循环读取3行。空格占一行。
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-28/5a43f29d6d771.png)
【readlines()】会读取文件全部行,每行作为一个元素形成一个列表。readlines()因为会一下子把文件全部读取到内存,所以只适合读小文件。
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-28/5a43f2c65cb3c.png)
【print f.tell()】读取光标所在位置
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-28/5a43f2e00bb9f.png)
【f.seek(0) 】使光标回到原点
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-28/5a43f2f25eee6.png)
【f.fileno】获得文件描述符,是一个数字
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-28/5a43f32195b78.png)
【f.name】获得文件的名字
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-28/5a43f34d97f2e.png)
【f.flush()】 刷新输出缓存
说明:写入的内容是存放在电脑的缓存中的,只有flush了一下,才会保存到硬盘中去。
刚写完一行内容,如果断电,他就没有写进去,断电内存中数据就会丢失。如果没有断电,数据还在内存的缓存中,需要刷新一下,才能写到硬盘中。
内存有一个大小限制,需要达到这个大小,才会把内存缓存中的内容写到硬盘中。
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-28/5a43f36db106b.png)
重启终端执行【cat /home/soft/file/file4.txt】查看截取的信息
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-28/5a43f3b6b2260.png)
打印进度条的小方法
【sys.stdout.write(“#”)】 sys.stdout方法在同一行打印
【sys.stdout.flush()】 每打印一个#符号写入一次
【time.sleep(0.3)】 每打印一次隔0.3秒
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-27/5a42fcce934af.png)
truncate() 截断文件,可以清空文件。
【f.truncate(10)】 保留文件前10个字符,其余截断
![](https://showdoc.shiyanbar.com/Public/Uploads/2017-12-28/5a43f3e6e1d6c.png)