python基础5—文件 | json序列化
下面这些代码没有经过试验, 只是作为代码段作为日后的参考, 这些死的api姑且放在这里用的时候看一下再做总结
import sys print(sys.path) # ---------------文件---------------------------- # 第一种直接方式 file1 = open("test.txt") file2 = open("output.txt", "w") # w 表示 write (覆写) r 表示 read a 表示 append (追写) while True: line = file1.readline() file2.write('"' + line[:s] + '"' + ",") if not line: break file1.close() file2.close() # read() 将文本文件所有行读到一个字符串中 # readline() 一行一行的读 # readlines() 将文本所有行读到一个list中,每一行是list的一个元素 # 第二种 文件迭代器 file2 = open("output.txt", "w") for line in open("test.txt"): file2.write('"' + line[:s] + '"' + ",") # 第三种 文件上下文管理器 # 打开文件 with open("somefile.txt", "r") as f: data = f.read() # loop 整个文档 with open("somefile.txt", "w") as f: for line in f: # 处理每一行 # 写入文本 with open("somefile.txt", "w") as f: f.write("xxx") f.write("xxx") # 要把打印的line写入文件中 with open("somefile.txt", "w") as f : print(line1, file=f) print(line2, file=f) # 二进制文件读写 f = open("EDC.jpg", "rb") print(f.read()) # 输出\xff\xd8.... 十六进制表示的字节 # 任何非标准文本文件(py2标准是ASCII, py3是unicode),用二进制读入文件,用.decode() 来解码 f = open("DeGuangGuo.txt", "rb") u = f.read().decode('DeyunCode') # 文件和目录的操作 # python调用内置的os模块来调用操作系统的接口函数 import os os.name # posix == nix nt == windows os.uname() # 查看具体信息 # 环境变量 存在os.environ中 是list # 当前目录的绝对路径 os.path.abspath('.') # 在某个目录下创建一个新目录,把新目录表示出来 os.path.join('/Users/EDC', 'Pictures') # 得到是新路径的字符串 # 创建目录 os.mkdir('/Users/EDC/Pictures/') # 删除目录 os.rmdir('/Users/EDC/Pictures') # 拆分字符串 os.path.split('/Users/EDC/Pictures/AJ.avi') # 拆分为俩部分, 后一部分为最后级别的目录或者文件 # ('/Users/EDC/Pictures/', 'AJ.avi') # 得到文件扩展名 os.path.splitext('/Users/EDC/Pictures/AJ.avi') # ('/Users/EDC/Pictures/AJ', '.avi') # 文件重命名 os.rename('xxx.xx', 'bbb') # 删除文件 os.remove('xxx') # 可以使用 Shutil来帮助我们搞定文件 # 列出当前目录下的所有目录 [x for x in os.listdir('.') if os.path.isDir(x)] # 列出 .py文件 [x for x in os.listdir('.') if os.path.isDir(x) and os.path.splitext(x)[1] == '.py'] # 序列化 从内存存储到硬盘或者传输的过程为序列化 从硬盘到内存为反序列 import pickle d = dict(name='jack', age=23, score=60) str = pickle.dumps(d) # 调用pickle的dumps函数进行序列化处理 print(str) f = open("dump.txt", "wb") pickle.dump(d, f) # 将内容序列化写到文件中 f.close() # 反序列化 import pickle f = open("dump.txt", "rb") d = pickle.load(f) # 调用load做反序列化 f.close() print(d) print('name is %s' % d['name']) # python2 和3 里面的pickle不一致,为了保证和谐 try: import cPickle as pickle except ImportError: import pickle # json 序列化 使用json这个库即可 import json d1 = dict(name='jack', age = 29, score=32) str = json.dump(d1) # 序列化 d2 = json.loads(str) # 反序列化