2018-09-13 File processing

2018-09-13 File processing,第1张

Python InOut *** 作除了前面的对键盘、屏幕进行读写 *** 作外,另外一个常用的 输入/输出 类型是处理文件,比如需要长期伏族存储程序中产生的数据或从文件中读取大数据量的数据,因此 创建、读、写 文件是许多程序所必需的。

文件读 写步骤:理论

打开文件:open方法

读或写文件:read方法读取、write方法写

读取完成,关闭文件:close方法

语法:实践

object = open(‘ file_name’ ,‘ access_mode  ’)

参数:

    file_name:文件路径及文件名称的字符串值

    access_mode:打开文件的模式:只读,写入w ,追加等。默认文件访问模式为只读(r)。

    buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的缺芹弊值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

read()方法:返回值 是字符串

read(数字) 方法从一个打开的文件中 读取一个字符串 。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。

read(): 查询所有,输出字符串格式

语法:

fileObject.read(数字)

readline()方法 :(返回第一行)返回值 是 字符串   

 readlines (所有数据在一行以列表显示)  如[1,2,3,4,]

语法:

fileObject.readline()

file.write(str):

    将字符串写入文件,没有返回值。

file.writelines(sequence):

    向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

练习1:一份文件中保存的是各位同学的各科成绩,编写程序计算出各位同 学的总成绩写入文件中每行末尾

保存学生成首困绩的文件格式:

练习2:构造一个文本文件,文件中有五万行数据,数据内容格式为:

name , mailbox

              vu1 , vu1@163.com

              vu2,vu2@163.com

              vu3,vu3@163.com

……

              ……

一. 通讯的途径

arduino和processing可以通过串行端口进行通讯,也就是我们常见的COM1、COM2什么的。在安装arduino驱动的时候我们已经设置了arduino的端口,我自己设置的是COM4,可以参考这里进行设置。

在arduino程序中也需要设置相同的端口:

processing接受和发送数据也是在这个端此唯口进行的,在编写的代码中定义,不需要设置程序。

二. arduino通过串行端口发布数据

下面是薯肆arduino最简单的数据发布代码,将data的值“1”,通过串行端口发布出去

int data=1//创建变量,储存需要发送的数据

void setup()

{

Serial.begin(9600)//定义数据传输率为9600比特

}

void loop()

{

Serial.print(data)//通过串行端口发送data的值

}

将代码上传到arduino后,可以先通过串行端口@@@@@@@@@检查,当然,需要将@@@@@@@@@的数据传输率设置成代码中的一样。这样,我们可以在程序下方看到不断出现的“1”。

三. processing从串行端口获取数据

下面是最简单的processing从串行端口获取数据森手培的代码,注意端口和传输率的值:

import processing.serial.*//引入serial库

int p_data//创建变量用于储存接收到的数据

Serial myPort//创建一个名为“myPort”的Serial对象

void setup() {

myPort = new Serial(this,”COM4″, 9600)

//定义myPort的端口和数据传输率

//应和Arduino保持一致

}

void draw() {

p_data = myPort.read()()//读取从串行端口获得的值,并储存在变量p_data中

println(p_data)//打印p_data的值

}

运行代码后,可以看到processing程序下方开始有数据涌现了,这说明它已经取得了来自COM4,以9600比特发布的值。这里有两个需要注意的地方,其一是Arduino必须连接到电脑,其二是不能同时开启Arduino的串行端口监控器。

但是,数据虽然已经取得,但并不是Arduino发布的“1”,而是“49”,这个问题我们后面章节再谈。

四. Arduino获取来自串行端口的值

创建一个简单的Arduino程序用于接收来自串行端口的值,并通过一个LED来判断。我们选择13号插口是因为arduino电路板中本身就在这个插口集成了个小型LED,在这个范例中我们就不用自己连线了:)

int a_data = 0// 创建变量用于储存在串行端口收到的值

int ledPin = 13//设定一个LED插口,用于检测收到的值

void setup() {

Serial.begin(9600)//定义数据传输率为9600比特

pinMode(ledPin, OUTPUT)//定义13号插口为输出模式

}

void loop() {

if (Serial.available() >0) {// 在收到数据后再做出处理:

a_data = Serial.read()// 将收到的值储存在变量中

if(a_data){//如果收到“1”(a_data为真),点亮LED,否则熄灭

digitalWrite(ledPin, HIGH)

}

else{

digitalWrite(ledPin, LOW)

}

}

}

五. processing通过串行端口发布数据

processing没有像arduino一样的串行端口@@@@@@@@@,所以最好先创建上一步所述的arduino接收端。下面的代码根据鼠标点击状态发布“0”和“1”:

import processing.serial.*//引入serial

Serial myPort

//创建一个名为“myPort”的Serial对象

void setup()

{

myPort = new Serial(this, “COM4″, 9600)

//定义myPort的端口和数据传输率

//应和Arduino保持一致

}

void draw(){

}

void mousePressed(){

myPort.write(1)

//当鼠标按下时通过COM4,以9600传输率发布数值“1”

}

void mouseReleased(){

myPort.write(0)

//当鼠标松开时通过COM4,以9600传输率发布数值“0”


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12254765.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存