这是我的代码,试图将该行的第二个字段从指数转换为float.
outputrrd = processrrd.communicate()
(output, error) = outputrrd
output_lines = output.split('\n')
for line in output_lines:
m = re.search(r"(.*): ", line)
if m != None:
felder = line.split(': ')
epoch = felder[0].strip(':')
utc = epoch2normal(epoch).strip("\n")
#print felder[1]
data = float(felder[1])
float_data = data * 10000000
print float_data
resultslist.append( utc + ' ' + hostname + ' ' + float_data)
Run Code Online (Sandbox Code Playgroud)
但是,程序因此错误而停止:
File "/opt/omd/scripts/python/livestatus/rrdfetch-convert.py", line 156, in <module>
data = float(felder[1])
ValueError: invalid literal for float(): 6,0865000000e-01
Run Code Online (Sandbox Code Playgroud)
有谁知道原因?
我尝试用Popen创建一个子进程.这是我的代码:
hostname = 'host'
servername = 'server'
commandargs = ['/usr/sbin/mminfo',' -o n',' -s',servername,' -q "client=\'',hostname,'\',savetime>=last day"',' -r "client,name"']
process = subprocess.Popen(commandargs, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)
问题是执行的命令失败并显示一条消息,联系的服务器不可用.似乎没有使用变量主机名...尝试使用字符串而不是列表,作为Popen中的命令(使用Shell = True)一切正常.
有谁知道代码有什么问题?
问候.斯特凡
我必须将指数字符串转换6.5235375356299998e-07为浮点值,并将计算结果显示为0.00000065235 ...如何在Python程序中执行此操作?
我想用popen创建一个子进程.特殊要求是在命令中使用shell方向.
args = [
'/bin/cat',
'<',
'textfile',
]
process = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
env={'LANG':'de_DE@euro'})
processpid = process.pid
output = process.communicate()
Run Code Online (Sandbox Code Playgroud)
我不想使用shell = True选项,因此我在这里向您提出问题,如何实现它.
关心斯特凡
python ×4
subprocess ×2
arguments ×1
exponent ×1
exponential ×1
list ×1
popen ×1
redirect ×1
string ×1