我一直在尝试制作读取文本文件的python代码,使其成为变量并使用i2c发送。下面是代码:
import serial
import smbus
import time
import sys
from time import sleep
# for RPI version 1, use "bus = smbus.SMBus(0)"
bus = smbus.SMBus(1)
# This is the address we setup in the Arduino Program
address = 0x04
loopvar = 1
while loopvar == 1:
text_file = open("./PB_Vision/command.txt", "r")
print text_file.read()
visioncommando = text_file.read()
print visioncommando
def writeNumber(value):
bus.write_byte(address, value)
bus.write_byte_data(address, 0, value)
return -1
var = int(visioncommando)
writeNumber(var)
print ("RPI: Hi Arduino, I sent you")
print (var)
text_file.close()
当我运行它时,我得到它作为输出;
110
Traceback (most recent call last):
File "testai.py", line 29, in <module>
var = int(visioncommando)
ValueError: invalid literal for int() with base 10: ''
任何建议,修复?
无论如何都要提前感谢。
感谢您提出的建议,更接近工作项目。
答案 0 :(得分:1)
删除它:
print text_file.read()
它会起作用。 迭代器只能使用一次......
答案 1 :(得分:1)
如果您的std::vector<A> vectorA;
int main()
{
A a;
// modifies a ...
vectorA.push_back(std::move(a));
}
文件包含:
command.txt
然后以下代码出错:
110
您的第二次while loopvar == 1:
text_file = open("./PB_Vision/command.txt", "r")
print text_file.read()
visioncommando = text_file.read()
print visioncommando
来电将导致text_file.read()
(空字符串),因为您已经用尽了打开文件对象的内容。
你可以做点什么,而不是:
""
答案 2 :(得分:0)
你以错误的方式读取文件,python将110
转换为int
,但之后找到一个空字符串''
。所以我建议在int()
命令之前添加一个条件,str.isdigit()
是一个很好的候选者。