我想运行下面的python “python get_timestamp.py -f gsham_input.xvg -1 -0.1348 -2 -0.1109”。但是,似乎python错误地使用短划线标记小数点前的负号,并显示以下错误:“File”get_timestamp.py“,第21行,在 value1 = float(arg) ValueError:浮点数无效文字():-0.1348 “ 请你帮我知道如何解决它?我的Python是令人困惑的减号与破折号
谢谢。
#!/usr/bin/env python
"""
Given two values, looks in a 3 column-file (output of sham.pl)
which time frame matches closest.
"""
import sys
USAGE = "USAGE: get_timestamp.py -f <sham output> -1 <value 1> -2 <value 2>\n"
# Parse arguments
read_input, read_value1, read_value2 = False, False, False
input_file, value1, value2 = None, None, None
for arg in sys.argv[1:]:
if read_input:
read_input = False
input_file = arg
elif read_value1:
read_value1 = False
value1 = float(arg)
elif read_value2:
read_value2 = False
value2 = float(arg)
if arg[0] == "-":
if arg == "-f":
read_input = True
continue
elif arg == "-1":
read_value1 = True
continue
elif arg == "-2":
read_value2 = True
else:
print USAGE
sys.stderr.write('ERROR: Option not recognized: %s\n' %arg)
sys.exit(1)
if not input_file:
print USAGE
sys.stderr.write('ERROR: You forgot to provide an input file.\n')
sys.exit(1)
# Open sham output
x_values, y_values, time_values = [], [], []
fhandle = open(input_file)
for line in fhandle:
if line[0] != "#" and len(line.split()) == 3:
t,x,y = line.split()
x_values.append(float(x))
y_values.append(float(y))
time_values.append(float(t))
fhandle.close()
def find_common_frame(min_x, min_y):
for xval in min_x:
xframe = xval[0]
for yval in min_y:
yframe = yval[0]
if xframe == yframe:
return (xframe, xval[1], yval[1])
return (None, None, None)
# If you cannot find anything, try increasing the nval variable
nval = 50
min_x = sorted(enumerate(x_values), key=lambda x: abs(x[1]-value1))[:nval]
min_y = sorted(enumerate(y_values), key=lambda x: abs(x[1]-value2))[:nval]
frame, x, y = find_common_frame(min_x, min_y)
if not frame:
print "No timestamp found.."
sys.exit(0)
print "## T = %s (%s, %s)" %(time_values[frame], x, y)
从查看帖子的格式看来,您使用的是两条不同的破折号(其中一条是M-dash?) – asongtoruin
这不是解析args的非常pythonic方法,而是使用'argparse'模块 –
老实说,我不是很熟悉python,需要使用python作为我的分析的一部分。你有任何建议来编辑它? – Sajad