码迷,mamicode.com
首页 > 编程语言 > 详细

Python零基础入门(12)-------文件读写

时间:2018-03-27 01:55:25      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:长度   自动   方法   写入内容   adl   pytho   python的安装   pat   接下来   

 

 数据类型:指向一个特定的文件 。不管是文本或者文档。或者其他媒体文件。

声明方式: open(‘路径‘ , ‘模式‘ , encoding = ‘编码‘);

             (1)路径 例如:‘C:\\Data\\temp.txt’  斜杠需要转义,所以要写2个斜杠。 加 r 忽略转义  r‘C:\Data\temp.txt‘

             (2)模式

                        区分下文件的形式有2种

                       【1】 文本    

                                 模式有    

                                            r  读  read      读取文本

                                           w 写   write      写入文本 ,写模式会将内容替换掉

                                          rw 读写

                                          a   追加  append   向文本中追加内容

                       【2】二进制(也称之为流) 

                                          b  

             (3)encoding 编码   编码有 ACSII  UTF8   GBK  GB2312  .......还有很多

                      

    

操作: 

(1)我们在D盘的data文件夹下建立一个 temp.txt  在里面写入 欢迎使用Python

技术分享图片

 

(2)接下来我们将文件读取输出到控制台上

我们通过 f.read() 方法将 temp.txt 文本文件的内容读取出来 (但是但是我们文本的换行却使用转义字符 \n 显示了出来)

技术分享图片

 

(3)接下来使用 print() 方法将将 f.read() 的内容输出

技术分享图片

发现没有输出任何内容,这个是为什么呢?

原因是应为我们的  read() 函数的机制有一个指针,在读取的时候移动指针,当read结束的时候指针已经移动到了结尾。所以。当我们调用 read() 函数的时候,指针继续移动,却读不到任何内容,所以打印出空的

解决方法:

               【1】重新创建文件的实例   这种比较麻烦

               【2】 seek(0) 将指针重新移动到开头

                技术分享图片

 

(4) 读取完,我们不需要在继续操作了,可以调用 close() 方法关闭 

           技术分享图片

 

(5) read(num)  指定读取数量   【注:read() 不指定读取数量则一次性读取所有信息,假设文件很大,那么读取效率问题】

可以看到指定参数读取多少个字符

技术分享图片

 

 (6) readlines()  读取行,返回一个数组

技术分享图片

 

 (7) readline()   读取一行 ,调用一次,读取一行。

技术分享图片

循环输出 :为什么会看到隔一行呢? 因为print() 函数本身带一个 \n 换行。 可以指定print() 函数的第二个参数 end,结束符号

技术分享图片

技术分享图片

 

 (8) 关于编码的问题

           先将我们的  D:\data\temp.txt 另存一下,编码选UTF-8 。然后我们接着读取

技术分享图片

 发现读取的时候抛出了一个异常。

 技术分享图片

这个时候就使用 encoding 参数,读取就正常了

 技术分享图片

 

我们新建一个 write.txt 文件进行写入操作 (不创建也可以,你open的时候也会帮你创建)

 技术分享图片

 (9) write(str)  写入,返回写入字符的长度 

 技术分享图片

打开文本却发现什么都没有。

技术分享图片

 

我们write(str) 只是将文本写入到内存中。但是还没有保存,如果想保存,我们可以调用 flush() 或者你已经操作完了可以调用close()

flush() 方法将内存的操作进行映射到文本文件上 (不关闭文件情况下,输出缓存到硬盘上)

技术分享图片

技术分享图片

 

(10) writelines(list) 写入多个

技术分享图片

产生文件并写入内容

技术分享图片

 

我们往 temp.txt 中追加内容

 技术分享图片

 

 

附录

关于路径:

当我们省略掉盘符的时候,他是从系统的环境变量中找到Python的安装目录找文件的

技术分享图片

引用 os 使用 os.getcwd() 方法可以获取我们Python的安装目录

 技术分享图片

os.chdir(path) 指定操作目录

技术分享图片

 

关于 f.close() 即使我们不手动close() 内存到一定程度也会自动回收。不close()是一个不好的编程习惯

当然 Python 提供了一种了一种上下文的语法  代码段执行完成之后会自动调用回收 (应用场景,文件读写,数据库读写)

with 后面就是上下文的语法

技术分享图片

 

Python零基础入门(12)-------文件读写

标签:长度   自动   方法   写入内容   adl   pytho   python的安装   pat   接下来   

原文地址:https://www.cnblogs.com/Hong-Bin/p/8531397.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!