Om een bestand in te lezen zou ik open() gebruiken in het script ipv een pipe. Je zou dan gewoon de bestandsnaam als argument kunnen geven, bijv.
import sys
fname = sys.argv[1]
fin = open(fname)
Je start het script vervolgens met iets als,
./foo.py filename.pgn
Regels lezen kan met fin.readline(), fin.readlines(), of for line in file: ...
Eenvoudig filteren op lege regels en regels die beginnen met '[' kan als volgt,
for line in fin:
line = line.rstrip()
if line.startswith('['):
...
Een lege regel bevat nog een regelafbreek teken ('\n') met rstrip haal je die eruit, zodat je een lege string overhoudt. Een if die op line werkt is dan voor lege regels dus False.
Voor je laatste vraag, over nieuwe regels, heb ik te weinig info om te kunnen helpen.