How to read a whole file in Python? I would like my script to work however it is called
- script.py log.txt
- script.py < log2.txt
- python script.py < log2.txt
- python -i script.py logs/yesterday.txt
You get the idea.
I tried
import fileinput from bs4 import BeautifulSoup f = fileinput.input() soup = BeautifulSoup(f.read())
But I get
Traceback (most recent call last):
  File "visual-studio-extension-load-times.py", line 5, in <module>
    soup = BeautifulSoup(f.read())
AttributeError: FileInput instance has no attribute 'read'
Advertisement
Answer
Instead of using fileinput, open the file directly yourself:
import sys
try:
    fileobj = open(sys.argv[1], 'r')
except IndexError:
    fileobj = sys.stdin
with fileobj:
    data = fileobj.read()