open()返回一个文件对象,open(filename,mode)
f = open('workfile','w')第一个参数是包含文件名的字符串,第二个参数可以是包含一些字符的字符串
'r':仅读取文件, 'w':仅写入文件,'a'打开文件以进行添加的模式
'r+'打开文件进行读取和写入,模式参数是可选的。'r'如果省略,将被假定。
'b'附加模式的文件将以二进制模式打开。此模式应用于所有不包含文本的文件。
如果不使用with关键字,则应调用发f.close(),关闭文件并立即释放文件使用的所有系统资源。
如何读取纯文本的文件:
def main(): f = open(' 文件名', 'r') print(f.read()) f.close() if __name__ == '__main__': main()open函数指定的文件不存在或者无法打开,会引起异常状况,导致程序崩溃,我们可以用python的异常机制对可能在运行时发生状况的代码进行适当的处理:
def main(): f = None try: f =open('C:\dafef\Desktop2916734751.txt', 'r') print(f.read()) except FileNotFoundError: print('无法打开指定的文件') except LookupError: print('指定了未知的编码') except UnicodeDecodeError: print('读取文件时解码错误') finally: if f: f.close() if __name__ == '__main__': main()用with处理,在处理文件时,最好使用关键字,即使在某个时候引发了异常,文件在其套件完成后也会正确关闭,使用with语句,相对于try-finally块短得多。
def main(): try: with open('C:\dafef\Desktop2916734751.txt', 'r') as f: print(f.read()) except FileNotFoundError: print('无法打开指定的文件') except LookupError: print('指定了未知的编码') except UnicodeDecodeError: print('读取文件时解码错误') if __name__ == '__main__': main()在try代码块的后面跟上一个或多个except来捕获可能出现的异常情况。
除了read方法读取以外还可以用for-in循环逐行读取和readlines将文件按行读取到一个列表容器中:
import time def main(): with open(' ','r')as f: print(f.read()) #for in 逐行读取 with open('','r') as f: for line in f: print(line, end='') time.sleep(0.5) print() #读取文件按行读取到列表中 with open('','r') as f: lines = f.readlines() print(lines) if __name__ == '__main__': main()写文件时将文件模式设置为'w'
如何将1-100间的素数写入两个文件中:
from math import sqrt def is_prime(n): assert n > 0 for factor in range(2,int(sqrt(n))+1): if n % factor == 0: return False return True if n != 1 else False def main(): filenames = ('z.txt', 'b.txt') fs_list = [] try: for filename in filenames: fs_list.append(open(filename, 'w' )) for number in range(1, 100): if is_prime(number): if number < 50: fs_list[0].write(str(number) + '\n') elif number < 100: fs_list[1].write(str(number) + '\n') except IOError as ex: print(ex) print('写文件时发生错误') finally: for fs in fs_list: fs.close() print('操作完成') if __name__ == '__main__': main读写json文件
读取文件:
import json test = {'苹果': 12, '香蕉':13, '橙子': 14} print(test) print(type(test)) json_str = json.dumps(test) print(json_str) print(type(json_str))使用Python中的json模块将字典或列表以JSON格式保存到文件中:
import json def main(): mydict = { 'name': '怼怼', 'age': '19', 'like': 'apple' } try: with open('data.json','w') as fs: json.dump(mydict, fs) except IOError as e: print(e) print('保存数据完成') if __name__ == '__main__': mainjson模块主要有四个比较重要的函数,分别是:
dump- 将Python对象按照JSON格式序列化到文件中,
dumps - 将Python对象处理成JSON格式的字符串,
load - 将文件中的JSON数据反序列化成对象,
loads - 将字符串的内容反序列化成Python对象。