Librería fileinput (itera sobre lines de multiples streams)#

  • Última modificación: Mayo 14, 2022

[1]:
import fileinput
import glob
[2]:
!mkdir /tmp/demo
mkdir: cannot create directory ‘/tmp/demo’: File exists
[3]:
%%writefile /tmp/demo/text0.txt
line 0 0
line 0 1
line 0 2
line 0 3
Overwriting /tmp/demo/text0.txt
[4]:
%%writefile /tmp/demo/text1.txt
line 1 0
line 1 1
line 1 2
Overwriting /tmp/demo/text1.txt
[5]:
%%writefile /tmp/demo/text2.txt
line 2 0
line 2 1
Overwriting /tmp/demo/text2.txt
[6]:
files = glob.glob('/tmp/demo/*.txt')
files
[6]:
['/tmp/demo/text1.txt', '/tmp/demo/text0.txt', '/tmp/demo/text2.txt']
[7]:
print('filename                   file  line     file          text')
print('                     descriptor    no  line no')
print('------------------------------------------------------------')

with fileinput.input(files=files) as f:
    for line in f:
        line = line.replace('\n', '')
        print(
            f"{f.filename()}          {f.fileno()}     {f.lineno()}         {f.filelineno()}  -> {line}"
        )
filename                   file  line     file          text
                     descriptor    no  line no
------------------------------------------------------------
/tmp/demo/text1.txt          55     1         1  -> line 1 0
/tmp/demo/text1.txt          55     2         2  -> line 1 1
/tmp/demo/text1.txt          55     3         3  -> line 1 2
/tmp/demo/text0.txt          55     4         1  -> line 0 0
/tmp/demo/text0.txt          55     5         2  -> line 0 1
/tmp/demo/text0.txt          55     6         3  -> line 0 2
/tmp/demo/text0.txt          55     7         4  -> line 0 3
/tmp/demo/text2.txt          55     8         1  -> line 2 0
/tmp/demo/text2.txt          55     9         2  -> line 2 1