在Raspberry Pi上使用Python获取系统正常运行时间
这个问题是指: 如果我在覆盆子上使用该程序,我会得到错误的时间:在Raspberry Pi上使用Python获取系统正常运行时间,python,uptime,Python,Uptime,这个问题是指: 如果我在覆盆子上使用该程序,我会得到错误的时间: ~ $ uname -a Linux raspberry 5.4.72-v7+ #1356 SMP Thu Oct 22 13:56:54 BST 2020 armv7l GNU/Linux pi@raspberry:~ $ uptime 15:14:33 up 20 min, 3 users, load average: 0,00, 0,08, 0,09 但结果是: 20 0 1 # days, hours, min
~ $ uname -a
Linux raspberry 5.4.72-v7+ #1356 SMP Thu Oct 22 13:56:54 BST 2020 armv7l GNU/Linux
pi@raspberry:~ $ uptime
15:14:33 up 20 min, 3 users, load average: 0,00, 0,08, 0,09
但结果是:
20 0 1 # days, hours, minutes
我正在使用:
import subprocess
def uptime1(): # liefert Zeit in s
raw = subprocess.check_output('uptime').decode("utf8").replace(',', '')
days = int(raw.split()[2])
if 'min' in raw:
hours = 0
minutes = int(raw[4])
else:
hours, minutes = map(int,raw.split()[4].split(':'))
print(days, hours, minutes)
totalsecs = ((days * 24 + hours) * 60 + minutes) * 60
return totalsecs
zeit=uptime1()
如何解决这个问题?尝试将时区设置为适合您的:
import os
os.environ['TZ']="America/New_York"
time.tzset()
如本文所述。
子进程正在从Python上下文启动进程,这可能与您的系统不同。尝试为您设置正确的时区:
import os
os.environ['TZ']="America/New_York"
time.tzset()
如本文所述。
子进程正在从Python上下文启动一个进程,这可能与您的系统不同。我认为您解析正常运行时间结果的逻辑需要工作。如果你想坚持你的方式,你应该打印出你从输出中提取的每个子字符串,看看你是否拥有你认为你拥有的。我认为您会发现需要对代码进行大量调整。为了让您开始了解这一点,以下是拆分输出的结果:
['15:14:33', 'up', '20', 'min,', '3', 'users,', 'load', 'average:', '0,00,', '0,08,', '0,09']
您正在使用此拆分中的[2]
和[4]
,即分钟数和用户数,但您似乎希望第一个给您几天,第二个给您几分钟
作为另一种方式的建议,下面的代码将简单地从字符串中提取所有数字,这将为您提供一个计算输出中所有数据的起点:
import re
output = '15:14:33 up 20 min, 3 users, load average: 0,00, 0,08, 0,09'
exp = re.compile(r"(\d+)")
i = 0
r = []
while True:
m = exp.search(output, i)
if not m:
break
r.append(int(m.group(1)))
i = m.end(1)
print(r)
结果:
[15, 14, 33, 20, 3, 0, 0, 0, 8, 0, 9]
因此,从这里开始,您只需执行
r[3]
,r[5]
等操作即可获得所有数字。这只是解析输出的一种方法。我认为解析正常运行时间结果的逻辑需要工作。如果你想坚持你的方式,你应该打印出你从输出中提取的每个子字符串,看看你是否拥有你认为你拥有的。我认为您会发现需要对代码进行大量调整。为了让您开始了解这一点,以下是拆分输出的结果:
['15:14:33', 'up', '20', 'min,', '3', 'users,', 'load', 'average:', '0,00,', '0,08,', '0,09']
您正在使用此拆分中的[2]
和[4]
,即分钟数和用户数,但您似乎希望第一个给您几天,第二个给您几分钟
作为另一种方式的建议,下面的代码将简单地从字符串中提取所有数字,这将为您提供一个计算输出中所有数据的起点:
import re
output = '15:14:33 up 20 min, 3 users, load average: 0,00, 0,08, 0,09'
exp = re.compile(r"(\d+)")
i = 0
r = []
while True:
m = exp.search(output, i)
if not m:
break
r.append(int(m.group(1)))
i = m.end(1)
print(r)
结果:
[15, 14, 33, 20, 3, 0, 0, 0, 8, 0, 9]
因此,从这里开始,您只需执行
r[3]
,r[5]
等操作即可获得所有数字。这只是解析输出的一种方法。导入os.environ['TZ']=“America/New_York”time.tzset()
我有一个错误:
~ $ python3 /home/pi/melder_status.py
Traceback (most recent call last):
File "/home/pi/melder_status.py", line 11, in <module>
time.tzset()
NameError: name 'time' is not defined
~$python3/home/pi/melder\u status.py
回溯(最近一次呼叫最后一次):
文件“/home/pi/melder_status.py”,第11行,在
time.tzset()
NameError:未定义名称“时间”
导入os os.environ['TZ']=“美国/纽约”时间.tzset()
我有一个错误:
~ $ python3 /home/pi/melder_status.py
Traceback (most recent call last):
File "/home/pi/melder_status.py", line 11, in <module>
time.tzset()
NameError: name 'time' is not defined
~$python3/home/pi/melder\u status.py
回溯(最近一次呼叫最后一次):
文件“/home/pi/melder_status.py”,第11行,在
time.tzset()
NameError:未定义名称“时间”
我找到了另一个解决方案:
谢谢你的想法。
打印(输出)我找到了另一种解决方案: 谢谢你的想法。
打印(输出)您希望输出什么?您希望输出什么?