Jump to content

Python --> stdout pāradresācija uz teksta failu


Taksis
 Share

Recommended Posts

Sveicināti.

 

Uz W2008 R2 servera darbojas Python  2.7.12 skripts, kurš cikliski izpilda zināmas darbības un beidz darbu pēc tam, kad ir nospiests ctrl/c.

Līdzīgi, ka šajā piemērā.

from time import sleep
import sys

signaled_to_stop = False

sheep_counter       = 1 

print "Running.. (press CTRL-C to stop)"

while True:
    try:
        # Wait 3 seconds between each step.

        sleep(3)
        print "Counting sheeps... %s" % sheep_counter
        sheep_counter += 1
        # If signaled to stop then - Create a peepfile and stop the loop
        if signaled_to_stop:

            print "Stop requested..."
            if signaled_to_stop:
                break

    except KeyboardInterrupt:
        print "\nStopping (might take some seconds).."
        signaled_to_stop = True

    except SystemExit as err:
        raise err

print "Process has finished."

 

palaižam skiptu:

 

python cikls.py

Running.. (press CTRL-C to stop)
Counting sheeps... 1
Counting sheeps... 2
Counting sheeps... 3
Counting sheeps... 4
Counting sheeps... 5

Stopping (might take some seconds)..
Counting sheeps... 6
Stop requested...
Process has finished.

Divi jautājumi:

 

1. Kā panākt to, lai skripta darbības rezultāts nepārtraukti rakstītos teksta failā?

Savukārt, teksta fails atjaunatots ("refrešotos") tā, lai jebkurā brīdī varētu redzēt līdz kurai "aitai" skripts ir ticis?

Variants ar parasto stdout pāradresāciju darbojas...,

python cikls.py > rezultats.log

bet fails izveidojas tikai pašās beigās, tad, kad skripta darbība ir pārtraukta ar ctrl/c.

Skripta darbības laikā log faila garums visu laiku ir 0 (log fails ir tukšs).

 

2. Kā palaist skriptu automātiski pēc servera pārstartēšanās? Es mēģināju ielikt windows scheduler.

Skripts palaižas, bet uzreiz beidz darbu.

 

cikls.py

Link to comment
Share on other sites

Super!

Liels Paldies!!!

 

Ieliku pēc:

print "Counting sheeps... %s" % sheep_counter
sys.stdout.flush()

 

Tagad log fails atjaunojas.

 

Link to comment
Share on other sites

Anonīms Alkoholiķis

Kapec daram kanpie pertikiem? Varbut aizvietojam sys.stdout objektu ar file objektu?

  • Kādas šausmas! 1
Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...