python学习07-输入输出

今天坐了4个多小时的车,终于从工作城市回家过年了

有点累,也就学了很简单的一些内容

# 读和写文件

# open(filename,mode) #参数 文件名和打开模式
'''
文件名就不多解释了,文件的名字
模式:
r 只读 (默认)
rb 以二进制格式打开文件用于只读
r+ 读写
rb+ 以二进制格式打开文件用于读写
w  	打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+ 	打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a 	打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
ab 	以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 	打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

简单理解就是 r r+,w w+ a a+  这是普通格式的
再此基础上加上b 代表二进制文件格式
'''
 # f = open('C:\Users\zxy\Desktop\fileTest.txt', 'w')
#SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
# f = open(r'C:\Users\zxy\Desktop\fileTest.txt', 'w')
# 上面报错是因为\被转义了 这里我们就要用到之前说的r标识关键字,来保持原字符串的意思
# f.write("文件写入测试 \n换行测试") #我的桌面的文件内已经被写入了这两个内容,并且也成功换行了
# f.close()  # 这里要注意 文件资源打开后一定要close 就像java中获取到资源之后最后一步都是close一样

# 读取文件
# 依旧是用的上面的f 文件对象 这里我们来读取一下文件中的内容
# f = open(r'C:\Users\zxy\Desktop\fileTest.txt', 'r') # 这里将文件模式变为只读
# str=f.read()
# print(str) # io.UnsupportedOperation: not readable 这里报错了 因为我用的是上面的f对象,模式是w 只写 所以不行
# f.close()# 关闭!!!

# 修改后输出正常
# 文件写入测试
# 换行测试

# readline() 读取单独的一行 f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。
# str=f.readline() #文件写入测试
# str1=f.readline() #文件写入测试

# print(str) # 文件写入测试
# print(str1) #换行测试

# readlines() 读取该文件中的所有行
# str=f.readlines() # [] 这里输出空可能是因为前面的readline代码没有注释掉,导致文件指针停在最后一行
# 注释掉上面代码后 正常输出 ['文件写入测试 \n', '换行测试']
# print(str)
# f.close()

# write函数
#write函数是有返回值的 返回写入的字符数
# f = open(r'C:\Users\zxy\Desktop\fileTest.txt', 'w')
# num=f.write('一二三四五六七')
# print(num) # 7
# f.close()

#这里有一点要注意的是  如果你写入文件的不是字符串类型 要先用str()转成字符串类型

# pickle 模块
# 实现序列化和反序列化 java中就是要实现Serializable接口

import pickle,pprint
# data1={'a':'zxy','b':'test'}
# out=open(r'C:\Users\zxy\Desktop\fileTest.txt', 'wb') #注意这里是wb
# pickle.dump(data1,out)
# out.close()
# 我的文件内的数据 :€?       }??a攲zxy攲b攲test攗.

#反序列化
input=open(r'C:\Users\zxy\Desktop\fileTest.txt', 'rb')
data1=pickle.load(input)
print(data1) #{'a': 'zxy', 'b': 'test'}
#这里菜鸟上引入了pprint模块进行输出的
pprint.pprint(data1) # {'a': 'zxy', 'b': 'test'}
input.close()

'''
print()和pprint()都是python的打印模块,功能基本一样,
唯一的区别就是pprint()模块打印出来的数据结构更加完整,每行为一个数据结构,更加方便阅读打印输出结果。
特别是对于特别长的数据打印,print()输出结果都在一行,不方便查看,
而pprint()采用分行打印输出,所以对于数据结构比较复杂、数据长度较长的数据,
适合采用pprint()打印方式。当然,一般情况多数采用print()。
'''

你可能感兴趣的:(学习记录,python)