一、编码
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 = "\n夜空\n是海里翻起的一朵浪\n想念\n是海"
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('\n') # 来个空格
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 + "\n"
52 p2_str = "haha说: " + p2 + "\n"
53 f.writelines([p1_str, p2_str]) # 记录xixihaha的聊天内容
54
55
56 chat()