0

私はPythonが初めてで、学位の最終プロジェクトに取り組んでいます。数値 (21、23、28 など) を読み取り、それをスクリプト内の値と比較する Python スクリプトを作成したいと考えています。値が一致する場合、別の python スクリプトを実行する必要があります。すべてが正しく機能しているように見えますが、ファイルの赤の値は条件の一致に変化をもたらしません。スクリプトは、条件が実際に真である間、IF ではなく ELSE ステートメントを毎回実行します。

これが私のコードです:

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)

もう 1 つの質問は、1 つの .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 に答える