python脚本中的转义符号

时间:2018-07-06 07:24:51

标签: python

我为我的rpi项目编写了一些自动化python脚本...这里是脚本的一部分:

import socket
import sys
import platform
import uuid
import psutil
import subprocess
import os
import RPi.GPIO as GPIO
import time
from subprocess import call
def measure_temp():
        temp = os.popen("vcgencmd measure_temp").readline()
        return (temp.replace("temp=","").replace("'C\n",""))

while True:
        print
        print 'Hostname:' +socket.gethostname()
        print 'Machine :' +platform.machine()
        print
        print 'CPU Usage:'
        print(psutil.cpu_percent())
        print
        print 'MEM Usage:'
        print(psutil.virtual_memory().percent)
        print
        print 'Disk Usage:' 
        print(psutil.disk_usage('/').percent)
        print
        print 'CPU Temp:'
        if measure_temp() == "50.1":
          GPIO.setmode(GPIO.BCM)
          GPIO.setwarnings(False)
          GPIO.setup(22,GPIO.OUT)
          print "Fan on"
          GPIO.output(22,GPIO.HIGH)
          time.sleep(50)
          print "Fan off"
          GPIO.output(22,GPIO.LOW)
          time.sleep(10)
          GPIO.cleanup()
        print(measure_temp())
        time.sleep(10)
        os.system('clear')
print 'end'

我的问题在这一行:

if measure_temp() == "50.1": 

我要像这样在第一个数字之后转义所有符号:

if measure_temp() == "5\": 

但不起作用。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

measure_temp()似乎返回一个字符串。我先将其转换为float类型,然后检查该值是否大于50。

if float(measure_temp()) >= 50:
    # Your code

您需要确定measure_temp始终返回可以转换为浮点数的字符串。

答案 1 :(得分:0)

您可以将measure_temp()替换为以下内容,并返回float,这样更易​​于处理:

def measure_temp():
        temp = os.popen("vcgencmd measure_temp").readline()
        try :
                t = re.findall( r'temp=([\d\.]+)', temp )
                t = float(t[0])
        except :    # something went wrong
                print 'unable to convert the temperature:', temp
                t = 20.0   # room temperature
                pass
        return t

import re在文件开头的某个位置。

完成后,您可以将温度值与数字进行比较,例如if temperature > 50之类的东西。

以防万一,您最近的更改'if float(measure_temp())> = 50:'最终会在vcgencmd停顿或返回空字符串或无法轻松转换的内容时中断到float,您应该处理一些例外情况以使脚本平稳运行。