【1.40】文件的其他方法

 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 是字符操作, 其他都是字节操作
#这里就窃取到我爱你三个字符 九个字节 没有窃取到换行回车符号 光标在你后面 没有回车

我爱你
posted @ 2016-03-29 20:04  科学小怪癖  阅读(80)  评论(0)    收藏  举报