'Console warnings to file
I am running a python script using pandas.read_csv
to import a csv file. Pandas provides console warnings when it doesn't see what it expects such as:
Skipping line 163: Expected 41 fields in line 163, saw 42
How can I log this to a text file?
If I run the script from a command line, python > logfile.txt
only the output of print shows up in the file, not the warnings.
Solution 1:[1]
Use stderr
In bash, there are 3 default streams:
STDOUT: Redirected by >
or 1>
, this is standard output from a program.
STDERR: Redirected by 2>
, this is diagnostic output from a program.
STDIN: Input from console, use <
to input it.
./prog 2> errorlog.txt >logfile.txt
If you want to redirect ALL output to STDOUT, use:
./prog 2>&1
Here is some more information: I/O Redirection
Solution 2:[2]
This line worked for me
python script.py >>script.out 2>&1
which appends STDOUT (1) to script.out
file and redirects STDERR (2) to the same file (&1)
Note that output is appended, so you may want to call > script.out
to reset the file beforehand, as in
> script.out; python script.py >> script.out 2>&1
Sources
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | blackbrandt |
Solution 2 | Franco Marchesoni |