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 后面就是上下文的语法

  • 相关阅读:
    CodeForces Gym 100500A A. Poetry Challenge DFS
    CDOJ 486 Good Morning 傻逼题
    CDOJ 483 Data Structure Problem DFS
    CDOJ 482 Charitable Exchange bfs
    CDOJ 481 Apparent Magnitude 水题
    Codeforces Gym 100637G G. #TheDress 暴力
    Gym 100637F F. The Pool for Lucky Ones 暴力
    Codeforces Gym 100637B B. Lunch 找规律
    Codeforces Gym 100637A A. Nano alarm-clocks 前缀和
    TC SRM 663 div2 B AABB 逆推
  • 原文地址:https://www.cnblogs.com/Hong-Bin/p/8531397.html
Copyright © 2011-2022 走看看