正文
python基础四-文件读取
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
文件读取
open()接受一个参数:要打开的文件名, 并返回一个表示文件的对象, 存储到后面的变量中
python会在当前执行文件所在目录查找
可以使用绝对路径, 在linux中使用'/', 在windows使用'\'
绝对路径通常较长, 建议存到一个变量中!
关键字with在不再需要访问文件(合适的时候)后自动将文件关闭
pi_digits.txt3.1415926535 8979323856 2643383279
with open('pi_digits.txt') as file_object: contents = file_object.read() print(contents)#这样打印出来会多一个空行,原因在于read()在每一行末都会返回一个空字符串,将这个空字符串显示出来就是一个空行,即read()在最后一行行末遇到一个空字符串,最后多打印了一个空行 print(contents.rstrip())
#逐行读取filename = 'pi_digits.txt'with open(filename) as file_object: for i in file_object: print(i.rstrip())
创建一个包含文件各行内容的列表
readlines()返回一个列表,包含所有行
filename = 'text_files\pi_digits.txt'with open(filename) as file_object: lines = file_object.readlines()print(type(lines))print(lines)for line in lines: print(line.rstrip())# result:# <class 'list'># ['3.1415926535\n', ' 8979323856\n', ' 2643383279\n', ' ']# 3.1415926535# 8979323856# 2643383279#为什么列表最后有一个空格?因为readlines()读到文件末尾了
文件写入, python只能将str类型写入文本文件
filename = 'programming.txt'with open(filename, 'w') as file_object:#如果没有指定第二个参数,默认为只读 file_object.write("I love programming.")
write()不会在文本末尾添加换行
写入多行要用'\n'
#异常处理print("Give me two numbers, and I'll divide them.")print("Enter 'q' to quit.")while True: first_number = input("\nFirst number: ") if first_number == 'q': break second_number = input("\nSecond number: ") try: answer = int(first_number) / int(second_number) except ZeroDivisionError: print("You can't divide by 0!") else: print(answer)#try-except-else代码块原理: try-except代码块后面还有其他代码, 程序将接着运行#意思就是try尝试运行, except负责处理出错, 其余情况由else负责
#存储数据#json.dump()存储; json.load()读取import jsonnumbers = [2,3,5,7,11,13]filename = 'number.json'with open(filename, 'w') as f_obj: json.dump(numbers, f_obj) #接受两个参数, 要存储的数据以及可用于存储数据的文件对象#读取import jsonfilename = 'number.json'with open(filename) as f_obj: numbers = json.load(f_obj)print(numbers)print(type(numbers))