===== print a file to stdout using python ===== ==== task ==== Write a python script to display the contents of a file to stdout ==== solution ==== You can do import fileinput with fileinput.input() as f_input: for line in f_input: print(line, end='') If you save this script as filein.py and make it executable, you can do all of the following and get the expected output: $ ls | ./filein.py # Prints a directory listing to stdout. $ ./filein.py /etc/passwd # Reads /etc/passwd to stdout. $ ./filein.py < /etc/passwd # Reads /etc/passwd to stdout. If you want to print the filename and line number along with the contents, you can use import fileinput with fileinput.input() as f: for line in f: print(f.filename(), f.lineno(), line, end='') Credits:- I found these two tips in Python Cookbook by David Beazley, Brian K Jones, 3rd edition, published in 2013 -> Chapter 13 -> pg 539-540. See also: * https://stackoverflow.com/a/78991782 - my answer to the same question on stackoverflow. * https://docs.python.org/3/library/fileinput.html ==== one liner ==== python -c "import fileinput; print(''.join(fileinput.input()), end='')" For example $ ls | python -c "import fileinput; print(''.join(fileinput.input()), end='')" # Prints a directory listing to stdout. $ python -c "import fileinput; print(''.join(fileinput.input()), end='')" /etc/passwd # Reads /etc/passwd to stdout. $ python -c "import fileinput; print(''.join(fileinput.input()), end='')" < /etc/passwd # Reads /etc/passwd to stdout.