【python基础】文件读取

一、编码

  1、ASCII ——> 美国人创造的编码方式, 包括128个字符, 编码分别为0-127, 英文常用标点符号,数字,字母

  2、各个国家有了自己的编码
    问题: 在中国编码的文件 ——> U盘——> 日本(有自己的编码方式) ——> 乱码
  3、unnicode 万国码,统一收纳了基本上全世界所有国家的字符 ——> 并没有实现
  4、utf-8 字符编码对应,对ASCII编码进行向后兼容

 1 # 打开文件
 2 f = open("./message.txt")
 3 
 4 # 读取数据
 5 print(f.read())
 6 
 7 # 关闭文件
 8 f.close()
 9 
10 # readlines
11 res = f.readlines()
12 for x in res:
13 print(x)
14 
15  
16 # 在文件操作时, 使用with语句, 可以自动关闭掉使用完毕的文件, 不需要手动调用close方法
17 
18 # 语法
19     with open(路径, 模式, 编码) as 对象名:
20         文件的操作
21 
22 with open("dragon.txt") as f:
23 s = f.read()
24 print(s)        

二、写入数据

  打开文件的模式:默认是只读

  模式名  可做的操作  文件不存在
   r           可读          报错
    r+    可读可覆盖写       报错

    w         覆盖写              创建
   w+      可读可写            创建
    a         追加写              创建
    a+      可读可写            创建

  读取/写出二进制数据:

    rb、rb+

    wb、wb+、ab、ab+

    * w+ 可读可写, 读不出来东西;
    * a+ 可读可写, 读不出来东西;
  小结:
    1、文件不存在: r, r+ --> 报错; 其他的都会创建;
    2、 带 + 号的, 可读可写; a+, w+, r+
      a ——append,追加写
      w ——write,覆盖写
      r ——read,可读

 1 # 二进制
 2 # 1、读取已存在图片的二进制数据, rb
 3 # 2、创建一个新图片文件, 并写入二进制数据, wb
 4 # 3、关闭以上两个文件, 完成赋值
 5 
 6 f1 = open("ry6.jpeg", 'rb')
 7 # 复制出的新文件
 8 f2 = open("ry7.jpeg", 'wb')
 9 
10 d = f1.read() # 从原文件中读取所有数据
11 f2.write(d) # 写入到新文件中
12 
13 f1.close()
14 f2.close()

三、实例

 1 import time
 2 # 1、通过程序创建一个alpha.txt的文件, 将26个英文字母写在里边、
 3 
 4 def write_alpha():
 5     f = open("alpha.txt", "w")
 6     s = ""
 7     for x in range(65, 91):  # 65-90/ 97-122
 8         s += chr(x)
 9     f.write(s)
10     f.close()
11 
12 write_alpha()
13 
14 
15 # 2、写一首诗, 每句换行
16 def poem():
17     s = "
夜空
是海里翻起的一朵浪
想念
是海"
18     f = open("alpha.txt", "w")
19     f.write(s)
20     f.close()
21 
22 poem()
23 
24 
25 # 3、模拟聊天记录, 循环通过键盘输入, 俩人, 将俩人的对话保存在chat.txt中
26 # xixi说: 用户输入说话的内容....
27 # haha说: ....
28 # xixi说: .....
29 # haha说: ....
30 # xixi说: 用户没有输入 直接回车
31 # haha说: 用户没有输入 直接回车
32 # 聊天结束, 将以上存在chat.txt中; 并记录聊天的日期和时间: 2019-08-21 14:12:38
33 
34 
35 def chat():
36     f = open("chat.txt", "a")
37     # 获取当前时间 --> 时间元组 2019-08-21 14:47:03
38     t = time.localtime()
39     time_str = time.strftime("%Y-%m-%d %H:%S:%M", t)
40     f.write(time_str)  # 记录本次聊天的起始时间
41     f.write('
')  # 来个空格
42     while True :
43         p1 = input("xixi说:")  # ""
44         p2 = input("haha说:")  # ""
45 
46         if not p1 and not p2:  # 如果xixi也没有说,haha也没有说, 则聊天结束
47             f.close()
48             print("___聊天结束___")
49             break
50         else:
51             p1_str = "xixi说: " + p1 + "
"
52             p2_str = "haha说: " + p2 + "
"
53             f.writelines([p1_str, p2_str])  # 记录xixihaha的聊天内容
54 
55 
56 chat()
原文地址:https://www.cnblogs.com/Tree0108/p/12114951.html