zoukankan      html  css  js  c++  java
  • Python零基础入门(12)-------文件读写

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

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

                 (1)路径 例如:‘C:\Data\temp.txt’  斜杠需要转义,所以要写2个斜杠。 加 r 忽略转义  r'C:Data emp.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 文本文件的内容读取出来 (但是但是我们文本的换行却使用转义字符 显示了出来)

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

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

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

    解决方法:

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

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

                   

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

               

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

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

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

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

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

     (8) 关于编码的问题

               先将我们的  D:data emp.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 后面就是上下文的语法

  • 相关阅读:
    【C#食谱】【风味小吃】菜单2:角度转换为弧度
    16 Rules for Managers
    word打不开,要在安全模式下才能打开
    禁止修改IP地址工具及原理
    VB编程读取本地计算机IP地址及MAC地址
    联想TinkCenter 8000T 安装XP需要修改CMOS
    使用nLite封装2003集成Raid卡驱动
    怎么样让台式机通过笔记本无线上网 台式机共享上网 笔记本当无线路由器 两台电脑一根网线
    VB使用ADODB操作数据库的常用方法
    转:[震惊] 这两天发现被穿的真正原因——QQ电脑管家
  • 原文地址:https://www.cnblogs.com/Hong-Bin/p/8531397.html
Copyright © 2011-2022 走看看