`
_念-H
  • 浏览: 9469 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

6、IO

阅读更多

 1、IO:输入输出流

A、读文件

	 	# r:读,若文件不存在报错IOError
	 	f = open('c:/1.txt','r')
	 	# 读取文件内容,返回字符串
	 	f.read()
	 	# 关闭文件
	 	f.close()
	 	# 捕获异常
	 	# r:用ASCLL编码方式  rb:用二进制方式
	 	try:
	 		f = open('c:/1.txt','r')
	 	# f = open('c:/1.txt','r','gbk') 指定编码
	 		print r.read()
	 	finally:
	 		if f:
	 			f.close()
	 	# 简洁,用with
	 	with open('c:/1.txt','r') as f:
	 		print f.read()
	 	# 文件过大,反复调用read(size)
	 	f.read(10)
	 	#用每行读取的方式
	 	for line in f.readlines():
	 		print line.strip()

B、写文件

		# w wb
		with open('c:/1.txt', 'w') as f:
	    	f.write('Hello, world!')

2、操作文件与目录

 

	# os模块
	import os
	# 操作系统名称 POSIX:linux\unix\mac;nt:window
	os.name
	# 环境变量
	os.environ
	# 具体 某变量
	os.getenv('path')
	# 查看绝对路径
	os.path.abspath('.')
	# 创建目录 dir,使用join 连接目录
	os.path.join('c:/','dir') # c:/dir
	os.mkdir('c:/dir')
	# 删除目录
	os.rmdir('c:/dir')
	# 拆分文件与目录
	os.path.split('c:/1.txt') # ('c:/','1.txt')
	# 拆分文件后缀
	os.path.splitext('c:/1.txt') # ('c:/1','txt')
	# 文件重命名
	os.rename('1.txt','1.py')
	# 产出文件
	os.remove('1.py')

3、序列化

	# 引用模块 CPickle用C语言写的快,pickle用Python写的
	try:
		import cPickle as pickle
	except ImportError:
		import pickle
	# 序列化
	d = '123'
	pickle.dumps(d) # 序列化成一个字符串
	# 序列化,保存文件
	f = open('c:/1.py','wb')
	pickle.dump(d,f)
	# 反序列化,读文件
	f = open('c:/1.py','rb')
	d = pickle.load(f)
	f.close()

4、JSON

A:Python集合与json相互转换

	# 传输速度快
	# pythonx对象转json
	import json
	d = {'a':1,'b',2}
	# dumps() 转为json字符串;dump()可以直接将转为的字符串存入文件中
	json.dumps(d)   # json标准字符串 '{"a":1,"b":2}'
	# json转Python对象
	s = '{"a":1,"b":2}'
	# loads() :字符串转为对象;load() 将文件中的字符串读出,转为Python对象
	json.loads(s); # {'a':1,'b',2}

B:类与json相互转换

	#coding=utf-8
	class Student (object):
		def __init__(self,id,name):
			self.id = id
			self.name = name
	class User(object):
		def __init__(self,id,name,age):
			self.id = id
			self.name = name
			self.age = age
	def classTojson(self):
		return {
			'id':self.id,
			'name':self.name
		}
	def StrToStudent(s):
		return Student(s['id'],s['name'])
	if __name__ == '__main__':
		import json
		s = Student(1,'name')
		# 可以自己定义
		print json.dumps(s,default = classTojson)
		# {"id":1,"name":"name"}
		print '-----------------------------'
		
		# json字符串转为对象
		str_stu = '{"id":1,"name":"name"}'
		stu = json.loads(str_stu,object_hook = StrToStudent)
		print stu.id,' --',stu.name
		print '-----------------------------'
		
		u = User(1,'user',12)
		# 可以调用本身带有的方法
		print json.dumps(u,default = lambda obj:obj.__dict__)
		# {"age":12,"is":1,"name":"name"}

 

分享到:
评论

相关推荐

    STM32F103C8T6 IO驱动 WS2812B

    例程点亮6个灯,自己可以根据需要修改 IO驱动简单易懂,使用STM32F103C8T6最小系统板 驱动WS2812需要的实现纳秒级别的电平翻转,像一般主频较低的MCU很难实现这种级别的电平翻转。我在这里使用的MCU是STM32F103系列...

    stm32vet6 IO口模拟总线读写三星NANDFLASH

    用STM32VET6 的IO口模拟数据总线访问三星的NANDFLASH K9F1208.目前网上的相关资料比较少,多数为直接通过FSMC访问。少数的几个模拟IO的资料大都只能读出ID而不能正常读写。 本程序包括page,block,擦除与读写,在...

    stm32f103zet6普通IO口模拟串口

    STM32F103ZET6是一款广泛应用的基于ARM Cortex-M3内核的微控制器,具有丰富的外设接口和高性能。在实际项目中,有时会遇到串口资源不足的情况,这时就需要通过软件手段来模拟串口通信。本文将详细探讨如何使用STM32...

    利用单片机的IO口直接驱动断码屏

    利用单片机的IO口直接驱动断码屏 单片机是一种微型计算机,它的出现极大地推动了电子技术的发展。单片机的IO口是它的一个重要组成部分,通过IO口,单片机可以与外部设备进行交互和通信。在本文中,我们将重点介绍...

    C8T6_BH1750光照传感器(HAL库) 实测好用,描述中有IO口配置

    io口配置: 基础: KEY: PB8-KEY1 PB9-KEY2 LED: PC14-LED_R PC15-LED_G USART2=串口: PA2-TX PA3-RX BH1750: 3.3V GND PB6-SDA PB7-SCL //(不用)PB5-ADD 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 ...

    基于w5500官方库ioLibrary-Driver,在STM32F103RC上实现了mqtt的功能

    【作品名称】:基于w5500官方库ioLibrary_Driver,在STM32F103RC上实现了mqtt的功能 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 ...

    STM32F103RCT6.zip_16位AD_ADC8562_RCT703_STM32F103RCT6IO口_stm32 16

    16位AD芯片,基于STM32的ADC8562

    STM32H743全部封装IO引脚分配表.xlsx

    176引脚表pin-name有些问题,全部引脚的排序,!仅作为参考!,STM32H743I的O引脚分配表全部封装,包含h7所以封装引脚列表

    ATEQ F6-IO说明

    根据提供的文件信息,我们可以提取并总结出关于ATEQ F6-IO的相关知识点,主要包括接口示意图、PLC在PNP模式下的连接方式以及程序选择扩展接头等方面的内容。 ### ATEQ F6-IO概述 ATEQ F6-IO是一款用于特定应用场合...

    IO6下载软件

    标题中的“IO6下载软件”指的是苹果公司的iOS 6操作系统,这是一个针对iPhone、iPad和iPod touch设备的操作系统版本。iOS 6在2012年发布,带来了多项新功能和改进,例如全新的地图应用、Passbook服务以及Siri语音...

    3个IO口驱动6个LED

    对于驱动6个LED的情况,Charlieplexing只需要3个IO口,相比于行列式驱动减少了2个IO口。对于更大的LED阵列,比如20个LED,传统方法需要9个IO口,而Charlieplexing仅需5个,节省了4个IO口。 实现Charlieplexing的...

    2个io 实现6个按键检测

    标题"2个io 实现6个按键检测"提出了一个巧妙的解决方案,即通过复用IO口来检测多个按键,从而节省单片机的IO口资源。这种技术在资源受限的嵌入式系统中尤为重要,例如在 Arduino 或者 STM32 等单片机项目中。 首先...

    2个IO实现6个按键

    标题“2个IO实现6个按键”指的是通过某种技术手段,只使用2个IO端口就能够检测和处理6个按键的状态。这通常涉及到硬件和软件的结合,例如使用矩阵键盘扫描、编码器或者其他创新的电路设计。 具体来说,通过构建一个...

    STM32F407ZGT6__复用功能映射表

    STM32芯片内部有很多外设,这些外设的引脚都是与IO口复用的。也就是说,一个IO口如果可以复用为内置外设的功能引脚,那么当这个IO口作为内部外设使用的时候,就...本文档详细列出了STM32F407ZGT6的所有的端口AF映射表。

    PlatformIO 离线安装资源

    6. **持续集成/持续部署(CI/CD)**:PlatformIO可以与GitHub Actions、Travis CI、Jenkins等服务集成,实现自动化测试和部署。 在这个资源包中,`.platformio`文件夹包含了离线安装PlatformIO所需的所有组件,包括...

    RAPIDIO嵌入式系统互连_rapidio中文协议_rapidio嵌入式_

    6. **应用实例**:展示 RapidIO 在无线通信、军事、航空、视频处理等领域的实际应用案例。 通过学习这本书,读者不仅可以了解 RapidIO 协议的基本原理,还能掌握如何在实际项目中运用这些知识。对于那些需要处理高...

    很给力的IO按键扫描电路,老外的5个IO可以驱动25个按键

    首先,传统的按键扫描方法通常采用行扫描和列检测的方式,例如用3个IO口作为行扫描,2个IO口作为列检测,总共可以扫描6个按键(2*3=6)。然而,这种基本方法并没有充分利用IO口的潜力。通过一些创新设计,我们可以...

    使用VSCode+PlatformIO+HAL开发STM32F407ZGT6

    在本文中,我们将深入探讨如何使用Visual Studio Code (VSCode)、PlatformIO和HAL库来开发基于STM32F407ZGT6的嵌入式项目。STM32F407ZGT6是一款高性能的微控制器,属于STMicroelectronics的ARM Cortex-M4系列,广泛...

    socket.io,socket.io-client下载

    6. **房间和频道**:Socket.IO还支持将客户端分组到“房间”或“频道”,这样可以方便地向一组特定的客户端发送消息,而不需要广播给所有人。 在实际项目中,Socket.IO可以应用于实时聊天应用、在线游戏、股票行情...

    基恩士下IO-Link配置方式.zip_IO-link_io link_基恩士 iolink_基恩士IO—LINK_基恩士远程I

    6. **测试与调试**:配置完成后,进行全面的功能测试,验证PLC与IO-Link从站设备的通信是否正常,以及设备参数是否按预期工作。调试过程中,如有问题,可以通过IO-Link诊断信息快速定位问题原因。 基恩士的IO-Link...

Global site tag (gtag.js) - Google Analytics