Δημοσιεύτηκε: 22 Ιουν 2012, 02:25
Το 2>&1 και τα άλλα είναι shell specific... χρειάζεσαι bash για να εκτελεστεί σωστά. 
Βασικά στέλνει και κατευθύνει ό,τι γράφεται στο std error (2) να γραφτεί στο std out (1)
stderr.py -- Στέλνει χαρακτήρες στο standard error (stderr):
test.py:
Τα βάζεις στον ίδιο φάκελο και εκτελείς το test.py
Αν δεν θέλεις το stderr, αλλά το stdout, τότε αλλάζεις το stderr με το stdout.
Πηγή: http://stackoverflow.com/questions/2525 ... ess-output
Βασικά στέλνει και κατευθύνει ό,τι γράφεται στο std error (2) να γραφτεί στο std out (1)
stderr.py -- Στέλνει χαρακτήρες στο standard error (stderr):
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
import sys, time
for i in range(1,5):
if (i%2):
sys.stderr.write("prints time=3.80 and some other stuff\n")
else:
sys.stderr.write("test\n")
time.sleep(2)
test.py:
- Μορφοποιημένος Κώδικας: Επιλογή όλων
-
import subprocess
import sys
import re
child = subprocess.Popen("python stderr.py", shell=True, stderr=subprocess.PIPE)
complete = False
while True:
out = child.stderr.readline()
out = out.strip()
if out == '' and child.poll() != None:
break
m = re.search("time=([0-9.]+)", out)
if out != '' and m and m.group(1):
print("Time left: {0}".format(m.group(1)))
Τα βάζεις στον ίδιο φάκελο και εκτελείς το test.py
Αν δεν θέλεις το stderr, αλλά το stdout, τότε αλλάζεις το stderr με το stdout.
Πηγή: http://stackoverflow.com/questions/2525 ... ess-output