尝试编写多个脚本,这些脚本将访问一个文本文件以从所述文本文件中检索其切换值,然后返回值为false并将其更改为true,反之亦然。
值总是返回为false,不确定我丢失了什么,但这是文本文件:
1
False
3
True
5
6
7
8
9
这是源代码:
def append():
with open('values', 'r') as file:
# read a list of lines into data
data = file.readlines()
# now change the line
re_value = value
data[1] = re_value+"\n"
# and write everything back
with open('values', 'w') as file:
file.writelines(data)
print("value changed to "+re_value)
def read() -> bool:
#opens the value file to find the value of the toggle
f=open("values", "r")
for x, line in enumerate(f):
if x == 1:
toggle = line
print(toggle)
return toggle
f.close()
toggle = read()
if toggle:
print("Light is on turn it off")
#runs command to turn off the light
#runs command to change value for light
value = "False"
append()
else:
print("Light is off turn it on")
#runs command to turn on the light
#runs command to change value for light
value = "True"
append()
答案 0 :(得分:1)
好像您用来评估条件的布尔值是一个字符串。
在这种情况下,您可以将其保留为字符串:
if value == "True":
print "Condition is true!"
或实施类似的操作:
def str2bool(v):
return v.lower() in ("true",) # you can add to the tuple other values that you consider as true if useful
print str2bool(value)
答案 1 :(得分:0)
尝试以下方法进行切换:
putback=[]
with open('values', 'r') as file:
for e in file.readlines():
if e=='True' or e=='False':
print(e)
putback.append(not e)
else:
putback.append(e)
with open('values','w') as file1:
file.write('\n'.join(putback))
答案 2 :(得分:0)
找到我的错人,谢谢您的帮助,将if语句更改为
if toggle=="True\n":
print("Light is on turn it off")
#runs command to turn off the light
#runs command to change value for light
value = "False"
append()
它是多行文本文档,因此缺少新行标签
答案 3 :(得分:0)
据我了解,您想将True更改为False,将False更改为True,其余部分保持不变。
final_output = []
with open("values") as file:
data = file.readlines()
for line in data:
line = eval(line.strip())
if isinstance(line, bool):
print("Value is {0} Changing to {1}".format(line, not line))
final_output.append(not line)
else:
final_output.append(line)
with open("values", 'w') as file:
file.write("\n".join([str(line) for line in final_output]))