10.1.1 读取整个文件
首先创建一个文件如:pi_digits.txt
下面的程序可以读取该文件,再将其内容显示到屏幕上:
1 with open("pi_digits.txt") as file_object: 2 contents=file_object.read() 3 print(contents)
运行结果:
>>> ================== RESTART: F:/python学习/10/10.1/file_reader.py ================= 3.1415926535 8979323846 2643383279 >>>
说明:
1.使用方法read()读取文件(该文件如果与程序文件在同一目录下,直接使用文件名,否则需加绝对路径)。
2.关键字 with 在不再需要访问文件后将其关闭(你只管打开文件,并在需要时使用它,python自会在合适的时候自动将其关闭。)
3.使用关键字with与使用close()方法比较,避免了因为程序bug而导致close()语句未能执行文件不能关闭,导致文件丢失或受损,或程序中过早的调用close()语句,当需要调用文件时它已经关闭的情况。
10.1.2 文件路径
可以将需要读取的文件的准确位置(即绝对路径)告诉python,这样就不用关心当前 运行程序存储在什么地方了。
绝对路径通常比相对 路径更长,因此可以将其存储在一个变量中,再将该变量传递给open()会有所帮助。
file_path="f:/python学习/10/10.1/py_digist.txt" with open(file_path) as file_object:
通过使用绝对路径,可读取系统任何地方的文件。
10.1.3 逐行读取
要以每次一行的方式检查文件,可对文件对象使用for 循环:
filename="pi_digits.txt" with open(filename) as file_object: for line in file_object: print(line)
运行结果:
>>> ================ RESTART: F:/python学习/10/10.1/file_readlines.py ================ 3.1415926535 8979323846 2643383279 >>>
说明:
1.第一行,把需要打开的文件名存储在一个变量中
2.使用with关键字让python负责妥善的打开和关闭文件。
问题:每打印一行时,发现多出一个空行。
原因:因为在这个文件中,每一行末尾都有一个看不见的换行符,而print()语句也会加上一个换行符,因此每行末尾都有两个换行符:一个来自文件,另一个来自print语句
解决方法:可以在print语句中使用rstrip()
优化后的代码如下:
filename="pi_digits.txt" with open(filename) as file_object: for line in file_object: print(line.rstrip())
运行结果如下:
>>> ================ RESTART: F:/python学习/10/10.1/file_readlines.py ================ 3.1415926535 8979323846 2643383279 >>>
10.1.4 创建一个包含文件各行内容的列表