2017-03-23 3 views
0

私はba.pyと2.py別のスクリプトで変数をインポートする方法

ba.py言って、2つのファイルで作業:私は自動化を実行しています

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秒間寝たいです。私はcountba.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秒後に眠っていません。

この問題を解決する方法についてのご意見はありますか?

+0

私は毎回スクリプトが1 –

+2

にresettedされ、カウントを実行し、あなたがやるたびに実行されている観察するだけの事 'pythoを処理することができn scriptname'あなたは新鮮なプロセスを開始しています。以前のプロセスの変数は保持されません。スクリプト実行の間にデータを保持する必要がある場合は、ファイルに格納する必要があります。 – Barmar

答えて

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をしたくない場合は、スクリプトが

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

になり、あなた一度にすべてのファイルを引くし、それらが

filenames = [line.strip() for line in sys.stdin.readlines()] 
... 
関連する問題