day8 文件操作

2018-09-18 06:42:58来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

一、文件操作

  • r
1 f=open('log',mode='r',encoding='utf-8')
2 a=f.read()
3 print(a)
4 f.close()
  • rb
1 f=open('log',mode='rb')  #已bytes类型输入,不需要encoding='utf-8'
2 a=f.read()
3 print(a)
4 f.close()
  • w:对于写操作,当无此文件时,会先创建此文件。
1 f=open('log',mode='w',encoding='utf-8')  #w操作会将文件中原来的内容覆盖掉
2 a=f.write("你好")
3 f.close()
  • wb
1 1 f=open('log',mode='wb')
2 2 a=f.write("菜菜")     #TypeError: a bytes-like object is required, not 'str'
3 3 f.close()
4 
5 #修改后
6 f=open('log',mode='wb')
7 a=f.write("菜菜".encode('utf-8'))      #需要进行转码,因为是用bytes类型传入
8 f.close()
  •  a
1 f=open('log',mode='a',encoding='utf-8')
2 f.write(',你今天真好看啊')           #追加的内容不会覆盖文件内之前得内容
3 f.close()
  • ab
1 f=open('log',mode='ab')
2 f.write('\n你可真讨厌啊'.encode('utf-8'))
3 f.close()
  •  r+
1 f=open('log',mode='r+',encoding='utf-8')
2 print(f.read())
3 f.write('\n皮皮你真可爱啊')
4 print(f.read())    #读写模式下这一步不会被系统执行
5 f.close()
  •  w+
1 f=open('log','w+',encoding='utf-8')
2 f.write("妞妞你真讨厌啊")
3 print(f.read())   #写读模式下,这句也不会执行,因为光标现在在最后
4 f.close()

二、文件常用操作

 1 f=open('log','r+',encoding='utf-8')
 2 
 3 #read() :方法用于从文件读取指定的字节数,如果未给定或为负则读取所有。如果文件过大会造成内存溢出。
 4 a=f.read(3)  #read按照字符来进行读写
 5 print(a)
 6 
 7 #seek() 方法用于移动文件读取指针到指定位置。
 8 f.seek(3)  #seek是按照字节来寻找的,在utf-8中一个中文字符占3个字节,一个英文字母占一个字节
 9 a=f.read()
10 print(a)
11 
12 #tell() 方法返回文件的当前位置,即文件指针当前位置。
13 a=f.tell()
14 print(a)
15 
16 #readable()方法判断文件是否可读
17 a=f.readable()
18 print(a)
19 
20 #readline() 方法用于从文件读取整行,包括 "\n" 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 "\n" 字符。
21 a=f.readline()  #一行行的读,如果不加参数只会读取第一行
22 print(a)
23 
24 #readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。
25 a=f.readlines()  #读出来为列表
26 print(a)
27 
28 #truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。
29 f.truncate(6)  #在utf-8中一个中文字符占3个字节,如果后面参数不为3的悲伤,截取出来的中文就会处出现问题。
30 
31 f.close()

 三、with:为了避免打开文件后忘记关闭,可以通过管理上下文

如果open函数如果不指定编码方式,默认使用操作系统编码方式,windows的为gbk

 1 with open('log','r') as f: 2 f.readlines()

四、文件修改

 1 with open('小护士班主任',encoding='utf-8') as f,open('小护士班主任.bak','w',encoding='utf-8') as f2:
 2     for line in f:
 3         if '星儿' in line:  #班主任:星儿
 4             line = line.replace('星儿','啊娇')
 5         #写文件
 6         f2.write(line) #小护士:金老板
 7 
 8 import os
 9 os.remove('小护士班主任') #删除文件
10 os.rename('小护士班主任.bak','小护士班主任')  #重命名文件

 

五、作业

要求:先进行注册,在登录。

 1 username = input('请输入你要注册的用户名:')
 2 password = input('请输入你要注册的密码:')
 3 with open('list_of_info',mode='w',encoding='utf-8') as f:
 4     f.write('{}\n{}'.format(username,password))
 5 print('恭喜您,注册成功')
 6 lis = []
 7 i = 0
 8 while i < 3:
 9     usn = input('请输入你的用户名:')
10     pwd = input('请输入你的密码:')
11     with open('list_of_info',mode='r+',encoding='utf-8') as f1:
12         for line in f1:
13             lis.append(line)
14 
15     if usn == lis[0].strip() and pwd == lis[1].strip():
16         print('登录成功')
17         break
18     else:print('账号和密码错误')
19     i+=1

 

 

 

  

 

    

  

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:python终极篇 ---django 模板系统

下一篇:PyQt5--StatusBar