如何通过导入增加另一个脚本中的变量?

时间:2017-03-23 20:39:28

标签: python django scope automation global

我处理2个文件,比如ba.py和2.py

ba.py:

import sys

count  = 1 # This is global count

def callme():
    pass
    # Doing Some operation

2.py

import ba
print ba.count ## This is working fine
ba.callme() ## This is also working fine.

我正在运行自动化,这样的工作:

for i in $(find /home/some/SomeElse/HeyMore -type f); do python 2.py $i; done

此命令的作用是从指定的文件夹中获取文件并将其作为参数传递给2.py中的函数。

在内部,我想在python中打开文件并执行一些操作。但是,我不想让我的系统超载,所以在10个工作后我想睡10秒钟。我使用count中的ba.py来维护计数。在第一次调用它之后,它应该递增到2,依此类推。

然而,当它达到10时,它应该睡眠,因为我的逻辑写在下面。

print ba.count
ba.count = ba.count + 1  ## Here increment should happen
if ba.count % 10 == 0:
        time.sleep(10)
else:
        ba.callme()

每次运行此自动化脚本时,我只看到1,并且脚本在10秒后没有休眠。

有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:1)

为每个文件运行

2.py,并且不知道先前运行中的计数器集。一种解决方案是只运行2.py一次并在您想要处理的文件中输入管道:

import sys
import time

def callme(filename):
    print filename

for count,line in enumerate(sys.stdin):
    if count and not(count % 10):
        print('sleeping')
        time.sleep(1) # I got bored.... make that 10
    callme(line.strip())

你的脚本变成了

find /home/some/SomeElse/HeyMore -type f | python 2.py

如果您不希望find徘徊在抽取数据,您可以一次性提取所有文件,然后处理它们

filenames = [line.strip() for line in sys.stdin.readlines()]
...