@GreatLinkan: Här kommer ett exempel, angående användandet av pipes/stdin/stdout:
script.py
import fileinput
var = "this"
for line in fileinput.input():
if var in line:
print("Rad "+str(fileinput.lineno())+" innehåller ordet")
print("Klar")
input.txt
this row contains testord
does not contain the word
this row contains testord
Användandet av pipes/stdin/stdout:
Ett sätt att ändra standard input (stdin) till ett program kan göras genom att köra följande kommando från kommandotolken.
Nu har vi sagt åt kompilatorn, kör programmet "script.py" men ändra stdin (standard input) till det du läser från input.txt
Vi kan på samma sätt ändra stdout (standard output) till valfri fil på liknande sätt. T.ex.
script.py < input.txt > out.txt
Dvs: kör "script.py" med stdin "input.txt" och skriv resultatet till filen "out.txt" (den skapas automatiskt om den inte finns).
Output
Rad 1 innehåller det magiska ordet
Rad 3 innehåller det magiska ordet
Klar
Notera att jag aldrig har programmerat i just Python, men har kunskap inom andra programmeringsspråk.
Edit, följande kod skriver inte ut newline när den stöter på en rad som inte innehåller vad du letar efter. Såg det kravet först nu.
import fileinput
var = "this"
for line in fileinput.input():
if var in line:
print(line.rstrip('\n'))
print("Klar")
Källa: fileinput python