Error: awk: cmd. line:1: Unexpected end of string
-
I want to write down the temperature from the DS18B20 sensor in the variable
temp
. I'm using the module os.popen, but I get an errorawk: cmd. line:1: Unexpected end of string
.import os temp = os.popen('''awk -F= '/t=/ {printf "%.03f\n", $2/1000}' /sys/devices/w1_bus_master1/28-0000053f7e76/w1_slave ''').readline() print(temp)
-
@CAP-33 said in Error: awk: cmd. line:1: Unexpected end of string:
DS18B20
Here are a few ideas/questions. As I'm not a popen() expert I am admittedly grasping at straws a little here. However it may help you think through the problem.
Is the displayed the entire program file? It doesn't have a line #1 that invokes the proper interpreter.
I was going to check one of my systems for the presence of file /sys/devices/w1_bus_master1/28-0000053f7e76/w1_slave. Unfortunately all three of my devices that were on line a bit ago have gone away and I am remote from them. Check to make sure the file exists.
The final readline() method call may be a clue. Everything inside the popen() call is a single mandated parameter. There are optional parameters (https://www.tutorialspoint.com/python/os_popen.htm). One of the optional parameters can specify the use of line buffering. Perhaps you need to specify this parameter.
take care!
Bill
-
@William-Scott
I do not know how right this is, but it works:import os def temp(temp): temp = os.popen('cat /sys/devices/w1_bus_master1/28-0000053f7e76/w1_slave').readlines() temp = temp[1] temp = temp[29:34] temp = int(temp) temp = round(temp / 1000, 1) print('Temperature :', temp) temp(temp)
Just for some reason, rounding does not work