كيف يمكنني التكرار على جميع خطوط الملفات التي تم تمريرها في سطر الأوامر؟
سؤال
عادة ما أفعل هذا في بيرل:
أي شيء
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)
هذا النهج لطيف لأن الرئيسي يعتمد بحتة على مدخلاته ويمكنك اختبارها بأي شيء يطيع النموذج دفق المدخلات المحددة في الخط.
لا تنتمي إلى StackOverflow