• 练习15--阅读文件


    一 相关知识

    1 打开文件:open()函数--http://c.biancheng.net/view/2544.html

    • 功能:用于创建或打开指定文件
    • 语法格式:file = open(file_name [, mode='r' [ , buffering=-1 [ , encoding = None ]]]
    • 此格式中,用 [] 括起来的部分为可选参数,即可以使用也可以省略。其中,各个参数所代表的含义如下:
      • file:表示要创建的文件对象。
      • file_name:要创建或打开文件的文件名称,该名称要用引号(单引号或双引号都可以)括起来。需要注意的是,如果要打开的文件和当前执行的代码文件位于同一目录,则直接写文件名即可;否则,此参数需要指定打开文件所在的完整路径。
      • mode:可选参数,用于指定文件的打开模式。如果不写,则默认以只读(r)模式打开文件。
      • buffing:可选参数,用于指定对文件做读写操作时,是否使用缓冲区。
      • encoding:手动设定打开文件时所使用的编码格式,不同平台的 ecoding 参数值也不同,以 Windows 为例,其默认为 cp936(实际上就是 GBK 编码)。
    • open()文件对象常用的属性(成功打开文件之后,可以调用文件对象本身拥有的属性获取当前文件的部分信息)
      • file.name:返回文件的名称;
      • file.mode:返回打开文件时,采用的文件打开模式;
      • file.encoding:返回打开文件时使用的编码格式;
      • file.closed:判断文件是否己经关闭。

    2 读取文件:read()函数

    • python提供了如下 3 种函数,它们都可以帮我们实现读取文件中数据的操作:
    • Python read()函数
      • 功能:
        • 对于借助 open() 函数,并以可读模式(包括 r、r+、rb、rb+)打开的文件,可以调用 read() 函数逐个字节(或者逐个字符)读取文件中的内容。
        • 如果文件是以文本模式(非二进制模式)打开的,则 read() 函数会逐个字符进行读取;反之,如果文件以二进制模式打开,则 read() 函数会逐个字节进行读取。
      • 语法格式:file.read([size])
        • 其中,file 表示已打开的文件对象;size 作为一个可选参数,用于指定一次最多可读取的字符(字节)个数,如果省略,则默认一次性读取所有内容。
      • 注意:
        • 想使用 read() 函数成功读取文件内容,除了严格遵守 read() 的语法外,其还要求 open() 函数必须以可读默认(包括 r、r+、rb、rb+)打开文件。
        • 如果把open()的打开模式改为 w,程序会抛出io.UnsupportedOperation异常,提示文件没有读取权限

    3 关闭文件:close()函数

    • 功能:专门用来关闭已打开文件
    • 语法格式:file.close()
      • 其中,file 表示已打开的文件对象。
    • 注意:使用 open() 函数打开的文件,在操作完成之后,一定要调用 close() 函数将其关闭,否则程序的运行可能出现问题。

    4 常见问题

    • txt = open(filename)会返回文件的内容吗?
      • 不会。它其实是创建了一个叫做“文件对象”(fileobject)的东西。你可以把它想象成曾经的 DVD 播放器,你可以在里面移动然后“读取”它们。但是 DVD 播放器不是 DVD 本身,就像文件对象也不是文件本身一样。
    • 为什么打开文件两次不会收到报错?
      • Python 不会限制你只能打开一次文件,事实上有时候确实需要打开多次。

    二 代码

    1 程序代码

    # 从sys包里面获取argv函数
    from sys import argv
    # 用argv获取一个文件名
    script,filename = argv
    
    # 打开一个文件
    txt = open(filename)
    
    
    print(f"Here's your file {filename}")
    # 读取文件的内容, txt.(read) 是说: txt ,执行不带参数的 read 命令
    print(txt.read())
    
    print("Type the filename again:")
    # 再次输入想要读取的文本名称
    file_again = input("> ")
    
    # 打开文件
    txt_again = open(file_again)
    # 打印文本内容
    print(txt_again.read())
    
    txt.close()
    txt_again.close()

    2 执行结果

    PS E:3_work4_python2_code2_LearnPythonTheHardWay> python ex15.py ex15_sample.txt
    Here's your file ex15_sample.txt
    This is stuff I typed into a file.
    It is really cool stuff.
    Lots and lots of fun to have in here.
    Type the filename again:
    > ex15_sample.txt
    This is stuff I typed into a file.
    It is really cool stuff.
    Lots and lots of fun to have in here.
  • 相关阅读:
    元旦发布DayPilot Pro 5.8源代码
    新年新开端
    PWA 2007 过期解决办法
    Document Library Explorer 2007 源代码更新下载
    发布DayPilotPro5.5.1780 SP1源代码
    MOSS自带调查列表结果图形化展示
    自定义PWA报工界面:隐藏加班项
    学习Document Library Explorer 2007源代码
    WSS&MOSS SP3 Now Available
    SQL Server 2008安装失败
  • 原文地址:https://www.cnblogs.com/luoxun/p/13217093.html
Copyright © 2020-2023  润新知