0

我是 Python 新手,正在为我的学位做最后的项目。我想编写一个 Python 脚本,它将读取数值(如:21、23、28 等)并将其与脚本中的值进行比较。如果值匹配,它应该执行另一个 python 脚本。一切似乎都正常工作,但文件中的红色值在条件匹配方面没有任何变化。当条件真的为真时,脚本每次都执行语句 ELSE 而不是 IF。

这是我的代码:

import time
import sys
import os


check_period = 2
fo = open("/home/pi/thermometer1.txt", "r+")
str = fo.readline();
fo.close()


while True:
    fo = open("/home/pi/thermometer1.txt", "r+")
    str = fo.readline();
    if str < 25 :
        os.system("python /home/pi/servo/servo1/servo6.py")
        print str
        fo.close()
    else:
        os.system("python /home/pi/servo/servo1/servo1.py")
        print str
        fo.close()
    time.sleep(check_period)

另一个问题是如何编辑这个脚本,它将一个 .txt 文件与数值进行比较。23 到其他带有数值的 .txt 文件。27,如果满足条件,则执行另一个 python 脚本(类似于上面的代码)。提前感谢所有评论。

4

2 回答 2

2

从文件中读取你会得到字符串,而不是整数。由于它们是不同的(不可比较的)类型,因此您所做的任何比较都会导致基于类型1的一致但任意的值。显然,字符串被认为大于整数(对于 Cpython——其他实现可能表现不同)。

您需要从字符串中构造一个整数:

int_from_str = int(fo.readline())

当我们这样做时,有更好的方法来迭代文件:

with open("/home/pi/thermometer1.txt") as fin:
    for line in fin:
        int_from_str = int(fin)
        ...

1在 python3.x 上,除此之外的任何比较==都会引发异常。

于 2013-04-29T14:52:00.390 回答
0

当您从文本文件中读取时,您会得到字符串。与 int 比较的字符串将始终计算为False。代替

str = fo.readline()

它存储了一个字符串类型str,做

str = int(fo.readline())

但请注意,如果该行包含一个不能为 的值,int则会出现错误。

顺便说一句,您不需要在代码中的任何行之后放置分号,并且str应该避免使用变量名,因为它是 Python 内置类型。

于 2013-04-29T14:57:15.607 回答