Si të lexoni nga stdin në Python


Ekzistojnë tre mënyra për të lexuar të dhënat nga stdin në Python.

  1. sys.stdin
  2. funksioni i integruar i hyrjes()
  3. funksioni fileinput.input()

1. Përdorimi i sys.stdin për të lexuar nga hyrja standarde

Funksioni rstrip() për ta hequr atë. Këtu është një program i thjeshtë për të lexuar mesazhet e përdoruesit nga hyrja standarde dhe për ta përpunuar atë. Programi do të përfundojë kur përdoruesi të hyjë në mesazhin \Dalje.

import sys

for line in sys.stdin:
    if 'Exit' == line.rstrip():
        break
    print(f'Processing Message from sys.stdin *****{line}*****')
print("Done")

Prodhimi:

Hi
Processing Message from sys.stdin *****Hi
*****
Hello
Processing Message from sys.stdin *****Hello
*****
Exit
Done

Vini re përdorimin e rstrip() për të hequr karakterin pasues të linjës së re në mënyrë që të mund të kontrollojmë nëse përdoruesi ka hyrë në mesazhin \Dalje apo jo.

2. Përdorimi i funksionit input() për të lexuar të dhënat stdin

Ne gjithashtu mund të përdorim funksionin Python input() për të lexuar të dhënat standarde të hyrjes. Ne gjithashtu mund t'i bëjmë një mesazh përdoruesit. Këtu është një shembull i thjeshtë për të lexuar dhe përpunuar mesazhin standard të hyrjes në ciklin e pafund, përveç nëse përdoruesi fut mesazhin Dalje.

while True:
    data = input("Please enter the message:\n")
    if 'Exit' == data:
        break
    print(f'Processing Message from input() *****{data}*****')

print("Done")

Prodhimi:

Funksioni input() nuk shton karakterin e linjës së re në mesazhin e përdoruesit.

3. Leximi i hyrjes standarde duke përdorur modulin e hyrjes së skedarit

Mund të përdorim gjithashtu funksionin fileinput.input() për të lexuar nga hyrja standarde. Moduli i hyrjes së skedarit ofron funksione të dobishme për të kaluar mbi hyrjen standarde ose një listë skedarësh. Kur nuk i japim asnjë argument funksionit input(), ai lexon argumente nga hyrja standarde. Ky funksion funksionon në të njëjtën mënyrë si sys.stdin dhe shton një karakter të linjës së re në fund të të dhënave të futura nga përdoruesi.

import fileinput

for fileinput_line in fileinput.input():
    if 'Exit' == fileinput_line.rstrip():
        break
    print(f'Processing Message from fileinput.input() *****{fileinput_line}*****')

print("Done")

Prodhimi: