1 # 应用程序运行过程中产生的数据都是存放在内存中的,若想永久保存下来,必须存放在硬盘中 2 # 应用程序操作硬件必须通过操作系统,而文件就是操作系统提供给应用程序来操作硬盘的虚拟概念 3 # 用户或者应用程序对文件的操作,就是向操作系统发起调用,然后由操作系统完成对硬盘的具体操作 4 # 有了文件的概念,我们无需考虑操作硬盘的细节,只需要关注文件操作即可 5 6 # 打开文件,由应用程序向操作系统发起系统调用open(),操作系统打开该文件,对应一块硬盘空间,并返回一个文件对象赋值给一个变量f 7 f = open('a.txt', 'r', encoding='utf-8') 8 # 调用文件下的读/写方法,会自动转成硬盘的读/写操作 9 data = f.read() 10 # 打印读出来的数据 11 print(data) 12 13 # 向操作系统发起关闭文件的请求,回收系统资源 14 f.close() # 回收变量操作系统打开的文件资源 15 del f # 回收应用程序级 16 # print(f) 17 18 # 资源回收和with上下文管理 19 # 打开一个文件包含两部分资源:应用程序的变量f和操作系统打开的文件。 20 # 在操作完毕一个文件时,必须把这两部分资源全部回收 21 # del f 一定要发生在f.close()之后,否则就会导致操作系统打开的文件无法关闭,白白 22 # 占用资源 23 24 # python自动垃圾回收机制决定了我们无需考虑del f,这就要求我们在操作文笔文件后 25 # 一定要f.close(),虽然我们如此强调,但是大多数的人还是会忘记f.close() 26 # 考虑到这一点,python提供了with关键字来帮我们管理上下文 27 # 可用with打开多个文件,中间用,分隔就行 28 with open('a.txt', 'r', encoding='utf-8') as read_f, open('b.txt', 'w', encoding='utf-8') as write_f: 29 res = read_f.read() 30 write_f.write(res) 31 32 # 指定操作文本文件的字符编码 33 34 # 由操作系统打开文件,如果打开的是文本文件,则会涉及到字符编码问题,如果没有为open()指定编码,那么打开文本文件的默认编码很明显就是操作系统说了算 35 # 操作系统会用自己的默认编码去打开文件,在windows下默认是gbk,linux下默认是utf-8。 36 37 # 要想保证不乱码,怎么存的就怎么取。 38 # pycharm默认存文件时以utf-8存的,所以取的时候也应该是utf-8,不然会乱码 39 with open('a.txt', 'r', encoding='gbk') as f: 40 print(f.read()) # 乱码 41 42 with open('a.txt', 'r', encoding='utf-8') as f: 43 print(f.read()) # 正常展示 44 45 # 文件的操作模式 46 # 控制文件读写操作的模式 47 # r(默认):只读 48 # w:只写 49 # a:只追加写 50 51 # r模式的案例使用 52 # r模式当文件不存在时报错,当文件存在时文件内指针跳到文件开头 53 with open('a.txt', 'r', encoding='utf-8') as f: 54 res = f.read() 55 print(res) 56 # 哈哈哈哈哈哈 57 # 呵呵呵呵呵呵 58 59 # 实现用户登录功能 60 inp_username = input('请输入你的姓名:').strip() 61 inp_password = input('请输入你的密码').strip() 62 63 with open(r'property.txt', mode='r', encoding='utf-8') as f: 64 for line in f: 65 u, p = line.strip('\n').split(':') 66 if u == inp_username and p == inp_password: 67 print('{name}登录成功'.format(name=u)) 68 break 69 else: 70 print('用户名或者密码错误,请重新输入') 71 # w模式的使用 72 # w只写模式:在文件不存在时创建空文档,文件存在时则清空文件,文件指针跑到文件开头 73 74 with open('c.txt', 'w', encoding='utf-8') as f: 75 f.write('你好') 76 f.write('我好') 77 f.write('大家好好') 78 f.write('才是\n真的好') 79 80 with open('c.txt', 'w', encoding='utf-8') as f: 81 f.write('哈哈哈') 82 f.write('呵呵呵') 83 84 # 在文件不关闭的情况下,连续的写入,后写的内容一定跟在前写内容的后面。 85 # 如果重新以w模式打开写入,则会清空文件内容
标签:文件,utf,操作系统,encoding,处理,006,txt,open From: https://www.cnblogs.com/li-ji-peng-niu-bi/p/18524738