วิธีอ่านจาก stdin ใน Python

How Read From Stdin Python



รับข้อมูลจากผู้ใช้เป็นส่วนสำคัญของภาษาการเขียนโปรแกรมใดๆ ผลลัพธ์ของหลาย ๆ โปรแกรมขึ้นอยู่กับอินพุตมาตรฐาน วิธีการรับข้อมูลจากผู้ใช้จะแตกต่างกันไปตามภาษาโปรแกรมต่างๆ มีหลายวิธีใน python เพื่ออ่านจากอินพุตมาตรฐาน NS ฟังก์ชันอินพุต() เป็นวิธีที่พบได้บ่อยที่สุดคือการอ่านจากอินพุตมาตรฐาน ซึ่งเป็นฟังก์ชันในตัว NS sys.stdin เป็นอีกวิธีหนึ่งในการอ่านจากอินพุตมาตรฐานของการโทร ฟังก์ชันอินพุต() ภายใน Python มีโมดูลอื่นชื่อ ไฟล์อินพุต สำหรับการอ่านอินพุตมาตรฐาน NS ฟังก์ชันอินพุต() ของโมดูลนี้สามารถใช้เพื่ออ่านอินพุตมาตรฐานหรืออ่านเนื้อหาจากไฟล์ตั้งแต่หนึ่งไฟล์ขึ้นไป วิธีต่างๆ ในการอ่านจากอินพุตมาตรฐานใน Python ได้อธิบายไว้ในบทช่วยสอนนี้

ตัวอย่างที่ 1: อ่านข้อมูลจาก stdin โดยใช้ฟังก์ชัน input()

ฟังก์ชัน input() เป็นฟังก์ชันที่ใช้มากที่สุดในการรับข้อมูลจากผู้ใช้ สร้างไฟล์ python ด้วยสคริปต์ต่อไปนี้เพื่อรับข้อมูลจากผู้ใช้จนกว่าจะกดปุ่ม 'n' ที่นี่สร้างลูปไม่สิ้นสุดโดยใช้ while loop ฟังก์ชัน input() แรกใช้เพื่อดึงข้อมูลจากผู้ใช้ และใช้ฟังก์ชัน print() เพื่อพิมพ์ค่าอินพุต ถัดไป ฟังก์ชัน input() ของสคริปต์ใช้เพื่อขอให้ผู้ใช้ทำงานต่ออีกครั้งหรือออกจากสคริปต์ หากผู้ใช้กด 'n' หรือ 'N' การวนซ้ำของลูปจะหยุดโดยคำสั่ง break มิฉะนั้น ลูปจะวนซ้ำอีกครั้งและรับอินพุตอื่นจากผู้ใช้ ฟังก์ชัน upper() ใช้ในสคริปต์เพื่อแปลงค่าที่ผู้ใช้ให้มาเป็นตัวพิมพ์ใหญ่







# กำหนดวงอนันต์

ในขณะที่ จริง:

# รับข้อมูลจากผู้ใช้

อินพุตVal= ป้อนข้อมูล('พิมพ์ข้อความใดๆ:NS')

# พิมพ์ค่าอินพุต

พิมพ์('ค่าที่ป้อนคือ %s'%(อินพุตVal))

#ขอให้มีตอนต่อไป

ต่อไปInput= ป้อนข้อมูล('อยากไปต่อไหม? (ใช่/ไม่ใช่)')

# ยุติจากลูปหากกด 'n'

ถ้าต่อไปอินพุตบน() == 'NS':

หยุดพัก

#พิมพ์ข้อความบอกเลิก

พิมพ์('โปรแกรมสิ้นสุดลง')

เอาท์พุท:

ผลลัพธ์ที่คล้ายกันต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ด้านบน ที่นี่, ' Linuxคำแนะนำ ' กำหนดให้เป็นค่าอินพุตแรกและสิ้นสุดจากสคริปต์สำหรับการกดอักขระ 'n'





ตัวอย่างที่ 2: อ่านข้อมูลจาก stdin โดยใช้ sys.stdin

NS sys.stdin เป็นอีกตัวเลือกหนึ่งของ Python ในการรับอินพุตมาตรฐานจากผู้ใช้จากเทอร์มินัล มันเรียกใช้ฟังก์ชัน input() ภายในและเพิ่ม ' NS ' หลังจากรับข้อมูลเข้าแล้ว สร้างไฟล์ python ด้วยสคริปต์ต่อไปนี้เพื่อตรวจสอบการใช้งานของ sys.stdin เพื่อรับอินพุตมาตรฐาน ในที่นี้ วนรอบ 'for-in' ใช้เพื่อรับอินพุตจากผู้ใช้ที่ไม่จำกัดเวลาจนกว่าผู้ใช้จะต้องการยุติสคริปต์ หลังจากพิมพ์ค่าอินพุตแล้ว ฟังก์ชันอินพุต() ใช้เพื่อขอให้ผู้ใช้หยุดสคริปต์หรือไม่ สคริปต์จะถูกยกเลิกหากผู้ใช้กด ' และ ' หรือ ' และ '. NS ฟังก์ชันบน() ใช้ที่นี่เพื่อทำให้ค่าอินพุตเป็นตัวพิมพ์ใหญ่





# นำเข้าโมดูล sys

นำเข้า sys


พิมพ์('พิมพ์ข้อความใด ๆ :')


# รับอินพุตโดยใช้ stdin

สำหรับอินพุตValใน sys.stdin:

# พิมพ์ค่าอินพุต

พิมพ์('ค่าที่ป้อนคือ:%s'% อินพุตVal)


#ขอให้มีตอนต่อไป

ต่อไปInput= ป้อนข้อมูล('อยากเลิกมั้ย? (ใช่/ไม่ใช่)')

# ยุติจากลูปหากกด 'y/Y'

ถ้าต่อไปอินพุตเปลื้องผ้า().บน() == 'และ':

หยุดพัก

อื่น:

พิมพ์('พิมพ์ข้อความใด ๆ :')

เอาท์พุท:

ผลลัพธ์ที่คล้ายกันต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ด้านบน ที่นี่, ' การเขียนโปรแกรม Python ' กำหนดให้เป็นค่าอินพุตแรกและสิ้นสุดจากสคริปต์สำหรับการกดตัวอักษร 'y'



ตัวอย่างที่ 3: อ่านข้อมูลจาก stdin โดยใช้ fileinput

อินพุตไฟล์เป็นโมดูลอื่นของ Python เพื่อรับอินพุตมาตรฐาน บรรทัดข้อความสามารถนำมาจากเทอร์มินัลหรือไฟล์โดยใช้ fileinput.input() . หากไม่มีการระบุค่าอาร์กิวเมนต์ในฟังก์ชันนี้ ระบบจะรับอินพุตจากเทอร์มินัล และหากระบุชื่อไฟล์ที่มีอยู่เป็นค่าอาร์กิวเมนต์ ระบบจะรับอินพุตจากไฟล์ สร้างไฟล์ python ด้วยสคริปต์ต่อไปนี้เพื่อรับอินพุตมาตรฐานจากเทอร์มินัล ในที่นี้ วนรอบ 'for-in' ถูกใช้เป็นตัวอย่างก่อนหน้าเพื่อรับอินพุตเป็นเวลาอนันต์จนกว่าผู้ใช้จะต้องการยุติสคริปต์ ถัดไป ฟังก์ชัน input() ใช้เพื่อขอให้ผู้ใช้หยุดสคริปต์หรือไม่ สคริปต์จะถูกยกเลิกหากผู้ใช้พิมพ์ 'เลิก' หรือ 'เลิก' หรือ 'เลิก' . NS ฟังก์ชันบน() ใช้ที่นี่เพื่อทำให้ค่าอินพุตเป็นตัวพิมพ์ใหญ่ NS แถบ() ฟังก์ชั่น ใช้เพื่อลบช่องว่างเพิ่มเติมจากทั้งสองด้านของค่าอินพุต

# นำเข้าโมดูลอินพุตไฟล์

นำเข้า ไฟล์อินพุต


พิมพ์('ป้อนข้อความ:')

'' '

รับอินพุตโดยใช้ฟังก์ชัน fileinput.input() และ

กด ctrl+D เพื่อสิ้นสุดการรับค่าอินพุต

'' '


สำหรับอินพุตValใน ไฟล์อินพุต.ป้อนข้อมูล():

# ยุติจากลูปหากพิมพ์ 'quit'

ถ้าอินพุตVal.เปลื้องผ้า().บน() == 'ล้มเลิก':

หยุดพัก


# พิมพ์ค่าอินพุต

พิมพ์('ค่าที่ป้อนคือ:',อินพุตVal)

พิมพ์('ป้อนข้อความ:')

เอาท์พุท:

ผลลัพธ์ที่คล้ายกันต่อไปนี้จะปรากฏขึ้นหลังจากรันสคริปต์ด้านบน ที่นี่ 'เรียนรู้ python จาก LinuxHint.com' เป็นค่าอินพุตแรกและสิ้นสุดจากสคริปต์สำหรับพิมพ์คำว่า 'quit' คุณต้องจำสิ่งหนึ่งในขณะที่รับอินพุตจากเทอร์มินัลโดยใช้ ไฟล์อินพุต โมดูล. นั่นคือคุณต้องกด ctrl+d หลังจากป้อนข้อมูล

คุณต้องระบุชื่อไฟล์เป็นค่าอาร์กิวเมนต์ของ fileinput.input() ฟังก์ชันหากคุณต้องการรับข้อมูลจากไฟล์แทนเทอร์มินัล

บทสรุป:

บทช่วยสอนนี้แสดงวิธีที่แตกต่างกันสามวิธีในการรับอินพุตจากเทอร์มินัลโดยใช้ตัวอย่างง่ายๆ สามตัวอย่าง ไม่จำเป็นต้องใช้โมดูลเพื่อใช้ ฟังก์ชันอินพุต() สำหรับการป้อนข้อมูล จำเป็นต้องนำเข้าโมดูล sys เพื่อใช้งาน sys.stdin , และ โมดูลอินพุตไฟล์ จำเป็นต้องนำเข้าเพื่อใช้ fileinput.input() ในสคริปต์เพื่อรับอินพุตมาตรฐาน ฉันหวังว่าผู้ใช้ Python จะใช้อินพุตมาตรฐานตามความต้องการของพวกเขาหลังจากอ่านบทช่วยสอนนี้