By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,096 Members | 1,568 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,096 IT Pros & Developers. It's quick & easy.

Looping a script

P: 16
Hi

I have the following script that counts the amount of words in a file, prints an output, closes the file and then waits for 10secs. I need the script to repeat itself after it was waited the 10secs, anyone know how I can do this?

import time
text = open("c:\\file.txt").read()
v = text.count('word')
if v > 2:
print "has words"
text.close()
time.sleep(10)

Thanks
Aug 5 '07 #1
Share this Question
Share on Google+
6 Replies


ilikepython
Expert 100+
P: 844
Hi

I have the following script that counts the amount of words in a file, prints an output, closes the file and then waits for 10secs. I need the script to repeat itself after it was waited the 10secs, anyone know how I can do this?

import time
text = open("c:\\file.txt").read()
v = text.count('word')
if v > 2:
print "has words"
text.close()
time.sleep(10)

Thanks
Are you familiar with loops? Check some tutorials online if not.:
Expand|Select|Wrap|Line Numbers
  1. while 1:
  2.     text = open("c:\\file.txt").read()
  3.     v = text.count('word')
  4.     if v > 2:
  5.         print "has words"
  6.     text.close()
  7.     time.sleep(10)
  8.  
Aug 5 '07 #2

P: 16
Hi

Thanks for the reply, i'm learning python/programming from a couple of books but couldn't see that anywhere, however after your post and looking in the books again, its staring me in the face!

Now that I have that loop going, I want to add it to an existing looping script. However the first loop is continuous so the program does not seem to be executing my second loop code, can you tell me if there is a better loop than the p.loop for the first section of code to allow it (While still looping) to continue and execute the second loop part of code?

import sys
import pcapy
import time
import time
from impacket.ImpactDecoder import *

def recv_pkts(hdr, data):
While 1:
x = EthDecoder().decode(data)
sys.stdout = open('c:\\dir\\file.txt', 'a')
print x


def get_int():
devs = pcapy.findalldevs()
i=0
for eth in devs:
print " %d - %s" %(i,devs[i])
i+=1
sel=input(" Select interface: ")
dev=devs[sel]
return dev

dev = get_int()
p = pcapy.open_live(dev, 1500, 0, 100)
p.setfilter('tcp')
print "Listening on eth: net=%s, mask=%s\n" % (p.getnet(), p.getmask())
p.loop(-1, recv_pkts)

while 1:
text = open("c:\\dir\\file.txt").read()
v = text.count('word')
if v > 2:
print "has words"
text.close()
time.sleep(10)
Aug 7 '07 #3

P: 16
Sorry, the while: 1 on line 8 should not be there, the function is

def recv_pkts(hdr, data):
x = EthDecoder().decode(data)
sys.stdout = open('c:\\dir\\file.txt', 'a')
print x
Aug 7 '07 #4

ilikepython
Expert 100+
P: 844
Hi

Thanks for the reply, i'm learning python/programming from a couple of books but couldn't see that anywhere, however after your post and looking in the books again, its staring me in the face!

Now that I have that loop going, I want to add it to an existing looping script. However the first loop is continuous so the program does not seem to be executing my second loop code, can you tell me if there is a better loop than the p.loop for the first section of code to allow it (While still looping) to continue and execute the second loop part of code?

import sys
import pcapy
import time
import time
from impacket.ImpactDecoder import *

def recv_pkts(hdr, data):
x = EthDecoder().decode(data)
sys.stdout = open('c:\\dir\\file.txt', 'a')
print x


def get_int():
devs = pcapy.findalldevs()
i=0
for eth in devs:
print " %d - %s" %(i,devs[i])
i+=1
sel=input(" Select interface: ")
dev=devs[sel]
return dev

dev = get_int()
p = pcapy.open_live(dev, 1500, 0, 100)
p.setfilter('tcp')
print "Listening on eth: net=%s, mask=%s\n" % (p.getnet(), p.getmask())
p.loop(-1, recv_pkts)

while 1:
text = open("c:\\dir\\file.txt").read()
v = text.count('word')
if v > 2:
print "has words"
text.close()
time.sleep(10)
I am not familiar with the pcapy module but you could try using threads:
Expand|Select|Wrap|Line Numbers
  1. import thread
  2. def wordcount():
  3.     while 1:
  4.         text = open("c:\\dir\\file.txt").read()
  5.         v = text.count('word')
  6.         if v > 2:
  7.             print "has words"
  8.         text.close()
  9.         time.sleep(10)
  10.  
  11. def recv_pkts(hdr, data):
  12.     x = EthDecoder().decode(data)
  13.     sys.stdout = open('c:\\dir\\file.txt', 'a')
  14.     print x
  15.  
  16.  
  17. def get_int():
  18.     devs = pcapy.findalldevs()
  19.     for (i, eth) in enumerate(devs):  # no need for extra variable
  20.         print " %d - %s" %(i,devs[i])
  21.  
  22.     sel=input(" Select interface: ")
  23.     dev=devs[sel]
  24.     return dev
  25.  
  26. dev = get_int()
  27. p = pcapy.open_live(dev, 1500, 0, 100)
  28. p.setfilter('tcp')
  29. print "Listening on eth: net=%s, mask=%s\n" % (p.getnet(), p.getmask())
  30. thread.start_new_thread(wordcount, ())
  31. p.loop(-1, recv_pkts)
  32.  
Aug 7 '07 #5

P: 16
Hi

Thanks for that, I haven't looked at threading before but will look into it further now.
I think the problem i'll have is that the def recv_pkts needs to run continually where as the def wordcount() needs to only run every 10 secs, it looks from the modiftication you have done the whole script will wait 10 secs?
Is this correct or have I got that wrong?
Aug 7 '07 #6

ilikepython
Expert 100+
P: 844
Hi

Thanks for that, I haven't looked at threading before but will look into it further now.
I think the problem i'll have is that the def recv_pkts needs to run continually where as the def wordcount() needs to only run every 10 secs, it looks from the modiftication you have done the whole script will wait 10 secs?
Is this correct or have I got that wrong?
Nope, that's the thing about threads, they run in parallel. The time.sleep call only works for its thread so the main script will keep on running and only the thread will sleep.

There is also a threading module that you can also use. Make sure to check the documentation for both modules to get a better understanding.
Aug 7 '07 #7

Post your reply

Sign in to post your reply or Sign up for a free account.