zoukankan      html  css  js  c++  java
  • 小甲鱼第28课课后练习

    0. 下边只有一种方式不能打开文件,请问是哪一种,为什么?

    >>> f = open('E:/test.txt', 'w')   # A
    >>> f = open('E:	est.txt', 'w')   # B
    >>> f = open('E://test.txt', 'w')  # C
    >>> f = open('E:\test.txt', 'w')  # D

    答:B不能打开文件。

    Windows在路径名中既可以接受斜线(/)也可以接受反斜线(),不过如果使用反斜线作为路径名的分隔符的话,要注意使用双反斜线(\)进行转义,否则Python会将反斜线进行转义,例如( )看成一个换行符,( )看作一个制表符等。

    1. 打开一个文件我们使用open()函数,通过设置文件的打开模式,决定打开的文件具有那些性质,请问默认的打开模式是什么呢?

    答:open()函数默认的打开模式是'rt',即可读、文本的模式打开。

    *当文件与python放在同一文件夹下时,可以通过文件名如“demo.txt”直接访问文件

    2. 尽管Python有所谓的“垃圾回收机制”,但对于打开了的文件,在不需要用到的时候我们仍然需要使用f.close()将文件对象“关闭”,这是为什么呢?

    答:Python拥有垃圾收集机制,会在文件对象的引用计数降至零的时候自动关闭文件,所以在Python编程里,如果忘记关闭文件并不会造成内存泄漏那么危险。

    但并不是说就可以不要关闭文件,如果你对文件进行了写入操作,那么你应该在完成写入之后进行关闭文件。因为Python可能会缓存你写入的数据,如果这中间断电了神马的,那些缓存的数据根本就不会写入到文件中。所以,为了安全起见,要养成使用完文件后立刻关闭的优雅习惯。

    3. 如何将一个文件对象(f)中的数据存放进列表中?

    答:list(f),是不是非常的方便!

    4. 如何迭代打印出文件对象(f)中的每一行数据?

    答:直接使用for语句把文件对象迭代出来即可:

    for each_line in f:
            print(each_line)

     

     【总结】1、r、w、a分别表示读、写、追加(add)

                  2、b表示以二进制的方式

                  3、+ 表示以读写的方式打开

                  4、当以a、w的方式打开时,若文件不存在,会创建文件,若是以r的方式打开,文件不存在时会报错,r+也是如此。

                  5、以w、r的方式打开时,指针会定位在开头,其中使用w时会清空文件,注意使用r+时不会清空文件;当以a的方式打开时,指针会定位在文件末尾。=

    file 对象方法

    file.read([size]):size 未指定则返回整个文件,如果文件大小 >2 倍内存则有问题,f.read()读到文件尾时返回""(空字串)。

    file.readline():返回一行。

    file.readlines([size]) :返回包含size行的列表, size 未指定则返回全部行。

    for line in f: print line :通过迭代器访问。

    f.write("hello "):如果要写入字符串以外的数据,先将他转换为字符串。

    f.tell():返回一个整数,表示当前文件指针的位置(就是到文件头的比特数)

    f.seek(偏移量,[起始位置]):用来移动文件指针。

    偏移量: 单位为比特,可正可负

    起始位置: 0 - 文件头, 默认值; 1 - 当前位置; 2 - 文件尾

    【注意】若不使用‘b’方式打开,则起始位置只能选择0 - 文件头,否则会报错

    使用read方法,使用文件指针。相当于插入了书签。tell告诉我们的是当前指针的位置(一个中文字符占据两个字节)。

  • 相关阅读:
    Zabbix监控MySQL免密码设置
    NFS文件服务器搭建
    Glufster挂载失败Mount failed. Please check the log file for more details解决办法
    CentOS和Redhat救援模式
    CentOS和Redhat单用户模式
    EXSI中Linux安装tools
    Redhat7.5安装glusterfs4
    思科交换机根据mac地址限制主机
    怎么关闭win10防火墙
    [0] WCF开发下,提示HTTP 无法注册 URL 进程不具有此命名空间的访问权限
  • 原文地址:https://www.cnblogs.com/celine227/p/13772817.html
Copyright © 2011-2022 走看看