كيف يمكنني التكرار على جميع خطوط الملفات التي تم تمريرها في سطر الأوامر؟

StackOverflow https://stackoverflow.com/questions/715277

  •  23-08-2019
  •  | 
  •  

سؤال

عادة ما أفعل هذا في بيرل:

أي شيء

while(<>) {
    #do whatever;
}

ومن بعد cat foo.txt | whatever.pl

الآن، أريد أن أفعل هذا في بيثون. حاولت sys.stdin لكن ليس لدي أي فكرة عن كيفية القيام بذلك كما فعلت في بيرل. كيف يمكنني قراءة المدخلات؟

هل كانت مفيدة؟

المحلول

جرب هذا:

import fileinput
for line in fileinput.input():
    process(line)

نصائح أخرى

import sys
def main():
    for line in sys.stdin:
        print line
if __name__=='__main__':
    sys.exit(main())

شيء من هذا القبيل:

import sys

for line in sys.stdin:
    # whatever
import sys

for line in sys.stdin:
    # do stuff w/line

أنا أكره التغلب على حصان ميت، لكن هل يمكنني اقتراح استخدام وظيفة نقية؟

import sys

def main(stdin):
  for line in stdin:
    print("You said: " + line.strip())

if __name__ == "__main__":
  main(sys.stdin)

هذا النهج لطيف لأن الرئيسي يعتمد بحتة على مدخلاته ويمكنك اختبارها بأي شيء يطيع النموذج دفق المدخلات المحددة في الخط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top