1 #coding=utf-8
2 with open("test","w",encoding="utf-8") as f:
3 f.write("111\n222\n333\n444\n") #有返回值 返回字符串的长度
4
5 #f.close() 关闭文件 不关闭文件,打开文件后未关闭,如果要删除该文件是不允许删除的
6 re1=f.closed # 看文件是否打开
7
8 print(re1) # 打印false 表示文件是开启状态
9
10 print(f.encoding)
11 #显示 文件打开时的编码 和不同文件保存在硬盘的编码没有关系
12 # 不同平台对编码有不同的代号 如果我这里就是显示 gbk 但在xp 就会显示 cp936
13 #所以就需要注意编码 什么编码就什么解码
14 #的确不知道编码,那就猜,或者用拉丁文解码
15 #用能解码大多数字符的编码 来解码
16 #如果写用几种编码来写, 那解码时总会乱码 就要知道编码 来解码
17 # 或者用拉丁文解码 可以尽可能多解码
18
19 #如果在操作open 时 没有指定编码 那就是使用系统编码 来 读写
20 #拉丁文编码 能写 字符 不能写中文
21 with open("test","r+",encoding="latin-1") as f:
22 f.write("abc")
23 #正常 你现在打开文档 看到的没有 abc 关闭文档
24 #f.write("你好") #报错,写的时间 拉丁文不能编码中文
25
26 f.flush() # 文件刷新后你再打开文档 这时 你就会看到abc 就是刚刚操作的文件test 是在内存中操作的,
27 # 如果你现在打开硬盘上的该文件是没有内容的,
28 # 若果你用该flush来刷新一下就或将内容刷到硬盘上去,
29 # 通常的office 都会自动保存文件
30 #utf8 保存一个中文就一个字符
31
32 a=f.name #文件名 注意这里函数没有()
33 print(a)
34
35 print(f.tell()) #返回光标当前位置,返回值是字节位
36 #但是 read 是字符读取,其余任何读取找光标 都是字节位
37 # 汉字一个是utf-8三个字节 gbk 是2个字节
38 # win平台换行 是\r\n linux unix 就是\n 但是用b模式打开就能看见回车的字符
39 #看看newline吧 打开的参数 python就会将所有平台的回车 处理成\n
40 print(f.readlines())
41 #['\n', '222\n', '333\n', '444\n']
42
43
44 with open("test", "r+", encoding="UTF-8",newline='') as f:
45 f.write("abc")
46 print(f.readlines()) #这里就可以看见真正的 回车了,就是用 newline=‘’ 告诉python 你不要给我处理回车了
47 # ['abc\r\n', '222\r\n', '333\r\n', '444\r\n']
with open("test","w",encoding="utf-8") as f:
f.write("我爱你\nbaby\n")
with open("test","r+",encoding="utf-8") as f:
f.truncate(9)
#窗体是一个写操作 注意是写
#就是将一个文件 截取一段长度存下来 覆盖源文件
#这里就是截取 9个字节 注意只有read 是字符操作, 其他都是字节操作
#这里就窃取到我爱你三个字符 九个字节 没有窃取到换行回车符号 光标在你后面 没有回车
我爱你