Python 2.7:即使我下次运行会话,也会永久存储变量值

时间:2017-03-29 21:33:36

标签: python python-2.7 jenkins

场景:python代码,用于检查通过登机口输入的访客数量。 根据这个数字,我建立下一份工作。

编辑1:

file1 :( 第一次运行 在我的情况下,此文件计算到达默认值为3的访问者数量。现在我执行文件,我发现到访的访客是4。现在,将其导出到file2,并将访问者计数打印为4,同时访问者值现在在file1中更改为4。

现在第二次运行:

现在在file1中,访问者值为4,并且正在检查访问者是否> 4,现在如果计数是4然后我将相同的文件导出到file2然后我将其导出到file2并将值保留为5 **访问者的数量完全取决于URL)####

datasource = "www.PPrestraunt.com/personsentered"
data = len(datasource) #gives me the live value of the number of persons entered
if(visitors > 3): 
   bottles = data
   visitors = bottles
   print bottles
else:
   visitors = 3

将上面的代码导入到另一个具有工作

的文件中

file2的:

from file1 import visitors
number_of_bottles = visitors
print number_of_bottles

我在jenkins工作中设置相同,所以它每隔5分钟建立一次。 在上面的代码中,每次运行时访问者的值都不会改变,即使数字增加到4,代码值仍为3。

预期情况:如果值大于3,则值也应保留在下一个会话中,if条件现在应检查新值ex:(if(visitor> 4)

任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

就像@juanpa写的那样。

这是一个增加计数器的小程序,你可以根据你的代码进行定制

import os
data_file = "lower_bound.txt"
is_file_empty = (os.path.isfile(data_file)==False) or (os.stat(data_file).st_size == 0)
if (is_file_empty):
    with open(data_file,"w") as f:
        f.write("3");


datasource = "www.PPrestraunt.com/personsentered"
data = len(datasource) #gives me the live value of the number of persons entered
lower_bound = 0;
with open(data_file,"r") as f:
    lower_bound = int(f.read());

if (visitors>lower_bound):
    bottles = data
    visitors = bottles
    print bottles
    // @Alex either lower_bound+=1; or lower_bound = visitors not sure what you want
else: 
    visitors = lower_bound;
with open(data_file,"w") as f:
    f.write(str(lower_bound));
print lower_bound,"is the new minimum and",visitors,"is the current visitor count";

答案 1 :(得分:0)

这对于酸洗来说是一个很好的场景。你可以挑选数据(在你的情况下是一个计数器)并存储这些数据,然后在以后的时间检索它:

import pickle

def your_code(counter):
    # Replace this with your code and use the counter variable.
    # Every time you execute the code it will increase
    # e.g. 3, 4, 5, 6 ....
    print(counter)

try:
    counter = pickle.load(open('counter.pckl', 'rb'))
    counter += 1
    pickle.dump(counter, open('counter.pckl', 'wb'))
    # Now execute your code with the new counter:
    your_code(counter)

except:
    counter = 3
    pickle.dump(counter, open('counter.pckl', 'wb'))
    # Execute your code for the first time. This will only happen once.
    your_code(counter)

第一次执行此代码时,计数器将初始化为3.然后,您可以将现有代码作为函数调用并使用此计数器。每当您运行脚本时,计数器都会增加,您的代码将使用新版本的计数器:e.g. 3, 4, 5, 6