从文本中读取数值。文件并将其与条件Python进行比较

时间:2013-04-29 14:47:53

标签: python if-statement

我是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脚本(类似于上面的代码)。提前感谢所有评论。

2 个答案:

答案 0 :(得分: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上,==以外的任何比较都会引发异常。

答案 1 :(得分:0)

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

str = fo.readline()

将字符串类型存储在str中,执行

str = int(fo.readline())

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

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