foo 2> & 1 moyens rediriger toute la production, y compris la poignée 2 (qui est, STDERR), à partir de la commande foo pour traiter 1 (qui est, STDOUT)
donc ici out =! Foo 2> & 1 peut-être assez bien. ci-dessous est la démonstration:
egg.py:
#!/usr/bin/env python
# -*- coding: utf8 -*-
def main():
print 'hello'
print 3/0
if __name__ == "__main__":
main()
IPython 0,10
In [5]: out = !egg.py
Traceback (most recent call last):
File "D:\python\note\egg.py", line 7, in <module>
main()
File "D:\python\note\egg.py", line 5, in main
print 3/0
ZeroDivisionError: integer division or modulo by zero
In [6]: out
Out[6]: SList (.p, .n, .l, .s, .grep(), .fields(), sort() available):
0: hello
In [7]: out = !egg.py 2>&1
In [8]: out
Out[8]: SList (.p, .n, .l, .s, .grep(), .fields(), sort() available):
0: hello
1: Traceback (most recent call last):
2: File "D:\python\note\egg.py", line 7, in <module>
3: main()
4: File "D:\python\note\egg.py", line 5, in main
5: print 3/0
6: ZeroDivisionError: integer division or modulo by zero
Hope this helps
sunqiang: UNIX a ce type de redirection (** '2> & 1' * * pour dupliquer stderr à stdout, par exemple) longtemps avant que MS ne prenne en charge le support dans ses systèmes. Sous UNIX, il est généralisé (vous pouvez rediriger, dupliquer et fermer d'autres descripteurs de fichiers si vous connaissez leur nombre). –
@Jim Dennis, merci pour l'info. Je suis juste un débutant Linux. Je ne le sais pas avant. J'ai édité la réponse en conséquence. – sunqiang
Merci! Cela aide. – Geo