python学习-基础-IO编程

# 以下同步
# 文件读写
# 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__))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值