Which is better way to write out and err of python











up vote
2
down vote

favorite












I am writing python in Linux. I want to write the python output and error into different files than output them on the console.



Say if I have this python file example.py:



print('console output')
print(1/0)


I tried different way.

1. By executing the following command
python example.py >output 2>log

2. Update the example.py



logf = open("./log", "w")
try:
print('console output')
print(1/0)
except Exception as e:
logf.write(str(e))


and execute python example.py >output



The logs are different.
1st method:



Traceback (most recent call last):
File "try.py", line 2, in <module>
print(1/0)
ZeroDivisionError: division by zero


and for 2nd method:



division by zero


So I want to ask:




  1. why two logs are different? And how to make the 2nd output same as 1st one.

  2. Which is better way of write error into files? Or there is a better way of doing this.


Thanks for helping with my questions.










share|improve this question


















  • 1




    For your first question, it sounds like you're asking how to output a traceback instead of just the error message - does this post help?
    – Random Davis
    Nov 9 at 17:09















up vote
2
down vote

favorite












I am writing python in Linux. I want to write the python output and error into different files than output them on the console.



Say if I have this python file example.py:



print('console output')
print(1/0)


I tried different way.

1. By executing the following command
python example.py >output 2>log

2. Update the example.py



logf = open("./log", "w")
try:
print('console output')
print(1/0)
except Exception as e:
logf.write(str(e))


and execute python example.py >output



The logs are different.
1st method:



Traceback (most recent call last):
File "try.py", line 2, in <module>
print(1/0)
ZeroDivisionError: division by zero


and for 2nd method:



division by zero


So I want to ask:




  1. why two logs are different? And how to make the 2nd output same as 1st one.

  2. Which is better way of write error into files? Or there is a better way of doing this.


Thanks for helping with my questions.










share|improve this question


















  • 1




    For your first question, it sounds like you're asking how to output a traceback instead of just the error message - does this post help?
    – Random Davis
    Nov 9 at 17:09













up vote
2
down vote

favorite









up vote
2
down vote

favorite











I am writing python in Linux. I want to write the python output and error into different files than output them on the console.



Say if I have this python file example.py:



print('console output')
print(1/0)


I tried different way.

1. By executing the following command
python example.py >output 2>log

2. Update the example.py



logf = open("./log", "w")
try:
print('console output')
print(1/0)
except Exception as e:
logf.write(str(e))


and execute python example.py >output



The logs are different.
1st method:



Traceback (most recent call last):
File "try.py", line 2, in <module>
print(1/0)
ZeroDivisionError: division by zero


and for 2nd method:



division by zero


So I want to ask:




  1. why two logs are different? And how to make the 2nd output same as 1st one.

  2. Which is better way of write error into files? Or there is a better way of doing this.


Thanks for helping with my questions.










share|improve this question













I am writing python in Linux. I want to write the python output and error into different files than output them on the console.



Say if I have this python file example.py:



print('console output')
print(1/0)


I tried different way.

1. By executing the following command
python example.py >output 2>log

2. Update the example.py



logf = open("./log", "w")
try:
print('console output')
print(1/0)
except Exception as e:
logf.write(str(e))


and execute python example.py >output



The logs are different.
1st method:



Traceback (most recent call last):
File "try.py", line 2, in <module>
print(1/0)
ZeroDivisionError: division by zero


and for 2nd method:



division by zero


So I want to ask:




  1. why two logs are different? And how to make the 2nd output same as 1st one.

  2. Which is better way of write error into files? Or there is a better way of doing this.


Thanks for helping with my questions.







python linux stdout stderr






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 9 at 17:04









Echan

153110




153110








  • 1




    For your first question, it sounds like you're asking how to output a traceback instead of just the error message - does this post help?
    – Random Davis
    Nov 9 at 17:09














  • 1




    For your first question, it sounds like you're asking how to output a traceback instead of just the error message - does this post help?
    – Random Davis
    Nov 9 at 17:09








1




1




For your first question, it sounds like you're asking how to output a traceback instead of just the error message - does this post help?
– Random Davis
Nov 9 at 17:09




For your first question, it sounds like you're asking how to output a traceback instead of just the error message - does this post help?
– Random Davis
Nov 9 at 17:09












2 Answers
2






active

oldest

votes

















up vote
2
down vote



accepted










Leave the script the simple, original way:



# example.py
print('console output')
print(1/0)


Use easy trick in shell:



$ python example.py &> log.txt


If you wanted some other custom behaviour on unhandled exceptions, set a sys.excepthook.






share|improve this answer




























    up vote
    0
    down vote













    To combine both stdout and stderr into one file, which is also helpful when using more (or less) command



    python example.py 2>&1 > output
    python example.py 2>&1 | more


    To make each go into separate files



    python example.py 2> error > output


    To ignore stederr



    python example 2>/dev/null


    Hope this helps.






    share|improve this answer





















      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53230285%2fwhich-is-better-way-to-write-out-and-err-of-python%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes








      up vote
      2
      down vote



      accepted










      Leave the script the simple, original way:



      # example.py
      print('console output')
      print(1/0)


      Use easy trick in shell:



      $ python example.py &> log.txt


      If you wanted some other custom behaviour on unhandled exceptions, set a sys.excepthook.






      share|improve this answer

























        up vote
        2
        down vote



        accepted










        Leave the script the simple, original way:



        # example.py
        print('console output')
        print(1/0)


        Use easy trick in shell:



        $ python example.py &> log.txt


        If you wanted some other custom behaviour on unhandled exceptions, set a sys.excepthook.






        share|improve this answer























          up vote
          2
          down vote



          accepted







          up vote
          2
          down vote



          accepted






          Leave the script the simple, original way:



          # example.py
          print('console output')
          print(1/0)


          Use easy trick in shell:



          $ python example.py &> log.txt


          If you wanted some other custom behaviour on unhandled exceptions, set a sys.excepthook.






          share|improve this answer












          Leave the script the simple, original way:



          # example.py
          print('console output')
          print(1/0)


          Use easy trick in shell:



          $ python example.py &> log.txt


          If you wanted some other custom behaviour on unhandled exceptions, set a sys.excepthook.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 9 at 17:25









          wim

          156k49297428




          156k49297428
























              up vote
              0
              down vote













              To combine both stdout and stderr into one file, which is also helpful when using more (or less) command



              python example.py 2>&1 > output
              python example.py 2>&1 | more


              To make each go into separate files



              python example.py 2> error > output


              To ignore stederr



              python example 2>/dev/null


              Hope this helps.






              share|improve this answer

























                up vote
                0
                down vote













                To combine both stdout and stderr into one file, which is also helpful when using more (or less) command



                python example.py 2>&1 > output
                python example.py 2>&1 | more


                To make each go into separate files



                python example.py 2> error > output


                To ignore stederr



                python example 2>/dev/null


                Hope this helps.






                share|improve this answer























                  up vote
                  0
                  down vote










                  up vote
                  0
                  down vote









                  To combine both stdout and stderr into one file, which is also helpful when using more (or less) command



                  python example.py 2>&1 > output
                  python example.py 2>&1 | more


                  To make each go into separate files



                  python example.py 2> error > output


                  To ignore stederr



                  python example 2>/dev/null


                  Hope this helps.






                  share|improve this answer












                  To combine both stdout and stderr into one file, which is also helpful when using more (or less) command



                  python example.py 2>&1 > output
                  python example.py 2>&1 | more


                  To make each go into separate files



                  python example.py 2> error > output


                  To ignore stederr



                  python example 2>/dev/null


                  Hope this helps.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 9 at 17:32









                  dlink

                  795811




                  795811






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.





                      Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                      Please pay close attention to the following guidance:


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53230285%2fwhich-is-better-way-to-write-out-and-err-of-python%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      這個網誌中的熱門文章

                      Academy of Television Arts & Sciences

                      L'Équipe

                      1995 France bombings