练习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.
原文地址:https://www.cnblogs.com/luoxun/p/13217093.html