# 以下同步
# 文件读写
# r w (读、写)
# 读取文件,以GBK方式打开,如有有不识别的字符,最简单就是忽略错误
# f = open('/Users/data/test.txt', 'r', encoding='gbk', errors='ignore')
# # 如果文件不存在反报错(使用try finally 处理异常),如果存在使用 f.read()读取全部内容
# 最后一步是f.close() 关闭文件。(使用后关闭,因为文件对象会占用系统资源)
#
# try:
#f = open('/path/to/file', 'r')
#print(f.read())
#finally:
#if f:
# f.close()
# Python引入了with语句来自动帮我们调用close()方法:
#
# with open('/path/to/file', 'r') as f:
# print(f.read())
#
# 保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。
# 另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。因此,要根据需要决定怎么调用。
# 如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便:
# for line in f.readlines():
# print(line.strip()) # 把末尾的'\n'删掉
#
# file-like Object
# 像open()函数返回的这种有个read()方法的对象,在Python中统称为file-like Object
# 除了file外,还可以是内存的字节流,网络流,自定义流等等
#
# 写文件(w wb 写文本、写二进制文件)
# f = open('/Users/michael/test.txt', 'w')
# f.write('Hello, world!')
# f.close()
#
# 简写
# with open('/Users/michael/test.txt', 'w') as f:
# f.write('Hello, world!')
#
# with open(filepath, model) as f
# f.read
# f.wirte(text, model, lange. append)
#
# StringIO和BytesIO
# 早内存中读写str
#
# from io import StringIO
# 写入内存
# f = StringIO()
# f.write('hello ')
# # f.write('world !')
# f.getvalue() # 返回写入的内容
#
# 从内存中读取
# f = StringIO('Hello!\nHi!\nGoodbye!') # 内存中初始化数据
# s = f.readline()
#
#
# BytesIO
# StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO。
# from io import BytesIO
# f = BytesIO()
# f.write('中文'.encode('utf-8'))
# f.getvalue() #b'\xe4\xb8\xad\xe6\x96\x87'
#
# 操作文件和目录
# os模块
import os
print(os.name) # 系统类型(nt,posix) -> window,Linux
# uname 详细信息
# 环境变量
os.environ
# 获取某个环境变量的值,可以调用os.environ.get('key'):
#
# 操作文件和目录
os.path.abspath('.') # 当前路径绝对路径
os.listdir('.') # 当前路径包含的文件和文件夹
# os.path.join(path1, path2) 合并路径,注意系统兼容问题
# os.mkdir(path) 创建目录
# os.rmdir(path) 删除目录
# os.path.split(path) 拆分路径,后一部分总是最后级别的目录或文件名
# os.path.splitext() 获取文件扩展名
# os.rename(file1, file2) 文件修改名
# os.remove(file1) 删除文件
# shutil模块提供了copyfile()的函数,shutil模块中找到很多实用函数,它们可以看做是os模块的补充。
# 利用Python的特性来过滤文件
print([x for x in os.listdir('.') if os.path.isdir(x)])
print([x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1] == '.py'])
# pickle 序列化
import pickle
d = dict(name='Bob', age=20, score=88)
# pickle.dumps()方法把任意对象序列化成一个bytes
pickle.dumps(d)
# pickle.dump()直接把对象序列化后写入一个file-like Object
# f = open('dump.txt', 'wb')
# pickle.dump(d, f)
# f.close()
# pickle.loads()方法反序列化出对象,也可以直接用pickle.load()方法从一个file-like Object中直接反序列化出对象
# f = open('dump.txt', 'rb')
# d = pickle.load(f)
# f.close()
# JSON
import json
d = dict(name='Bob', age=20, score=88)
json.dumps(d)
# dump()方法可以直接把JSON写入一个file-like Object。
# json.loads(json_str)
class Stu3(object):
def __init__(self, name, age, score):
self.name = name
self.age = age
self.score = score
s = Stu3('Bob', 20, 88)
# 序列化类
print(json.dumps(s, default=lambda obj: obj.__dict__))
python学习-基础-IO编程
最新推荐文章于 2023-08-02 17:38:28 发布