Python中关于txt的简单读写操作
常用的集中读写模式:
1、r 打开只读文件,该文件必须存在。
2、r+ 打开可读写的文件,该文件必须存在。
3、w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
4、w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
5、a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
6、a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
7、上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。
1 读取全部内容
try: #python3的open函数可以额外加一个encoding参数 txt_file_handle=open("1.txt","r",encoding="utf-8") #read函数:直接取读文件的所有内容 #参数:根据长度读取内容 print(txt_file_handle.read(5)) print("*"*50) #readline函数:读取文件的游标所在的一行 #seek(0):将文件的游标指向最开始的位置 txt_file_handle.seek(0) print(txt_file_handle.readline()) print(txt_file_handle.readline()) #readlines函数:去读文件的所有行,返回的是列表 print("*"*50) print(txt_file_handle.readlines()) print(txt_file_handle) txt_file_handle.close() except FileNotFoundError as e: print ("文件不存在!")
2 逐行读取
# 打开文件 file_obj = open(txt_filename, 'r') # 逐行读取 line1 = file_obj.readline() print(line1) # 继续读下一行 line2 = file_obj.readline() print(line2) # 关闭文件 file_obj.close()
3 读取全部内容,返回列表
# 打开文件 file_obj = open(txt_filename, 'r') lines = file_obj.readlines() for i, line in enumerate(lines): print ('{}: {}'.format(i, line)) # 关闭文件 file_obj.close()
4 写操作
# 打开文件 file_obj = open(txt_filename, 'w') # 写入全部内容 file_obj.write("《Python数据分析》") file_obj.close() # 打开文件 file_obj = open(txt_filename, 'w') # 写入字符串列表 lines = ['这是第%i行 ' %n for n in range(100)] file_obj.writelines(lines) file_obj.close()
5 推荐写法
从上边几种读写方式中不难发现, 每次进行读写操作时都要调用close()函数将文件关闭, 使用起来并不方便,所以推荐以下写法:
try: with open("1.txt","r+",encoding="utf-8")as txt_file_handle: txt_file_handle.write() except FileNotFoundError as e: print ("文件不存在!")
文件操作的推荐写法, 只要是文件操作,保险起见都要用try except进行异常捕获, with 写法的特点:不需要手动close, write() 里面填写内容即可, 其中
with语句
- 包括了异常处理,自动调用文件关闭操作,推荐使用
- 适用于对资源进行访问的场合,确保无论适用过程中是否发生异常都会执行"清理"操作,如文件关闭、线程的自动获取与释放等