بيثون بطانة واحدة لطباعة كل الملفات في الدليل الحالي
سؤال
كيف يمكنني جعل التالية واحدة بطانة طباعة كل ملف من خلال الثعبان ؟
python -c "import sys;print '>>',sys.argv[1:]" | dir *.*
تحديدا أود أن أعرف كيفية الأنابيب في بيثون -c.DOS أو Cygwin الاستجابات المقبولة.
المحلول
يمكنك قراءة البيانات الأنابيب في بيثون السيناريو من خلال قراءة sys.stdin.على سبيل المثال:
ls -al | python -c "import sys; print sys.stdin.readlines()"
فإنه ليس من الواضح تماما ما تريد القيام به (ربما أنا غبي).الارتباك يأتي من المثال الخاص بك وهو الأنابيب البيانات من بيثون السيناريو.
نصائح أخرى
python -c "import os; print os.listdir('.')"
إذا كنت ترغب في تطبيق بعض التنسيقات مثل لديك في سؤالك،
python -c "import os; print '\n'.join(['>>%s' % x for x in os.listdir('.')])"
إذا كنت ترغب في استخدام الأنابيب، واستخدام xargs
:
ls | xargs python -c "import sys; print '>>', sys.argv[1:]"
وأو backticks:
python -c "import sys; print '>>', sys.argv[1:]" `ls`
إذا كنت ترغب في طباعة <م> جميع م> ملفات:
find . -type f
إذا كنت ترغب في طباعة ملفات الدليل الحالي فقط
find . -type f -maxdepth 1
إذا كنت ترغب في تضمين ">>" قبل كل سطر
find . -type f -maxdepth 1 | xargs -L 1 echo ">>"
إذا كنت لا تريد الفضاء بين ">>" و$ المسار من صدى
find . -type f -maxdepth 1 | xargs -L 1 printf ">>%s\n"
وهذا هو كل تستخدم سيغوين، بطبيعة الحال.
ls | python -c "import sys; print sys.stdin.read()"
ومجرد قراءة ستدين كالمعتاد للأنابيب
وأود أن أعرف كيفية الأنابيب على الرغم
اقتباس فقرة>هل كان لديك الأنابيب بطريقة خاطئة، إذا أردت لتغذية إخراج "دير" في بيثون، "دير" يجب أن يكون على اليسار. على سبيل المثال:
dir "*.*" | python -c "import sys;[sys.stdout.write('>>%s\n' % line) for line in sys.stdin]"
و(الإختراق مع قائمة الفهم هو أنه لا يسمح لك 'ل' البيان على سطر واحد بعد فاصلة منقوطة-إدخال كتلة).
ومن الواضح أن حل بيثون الأصلي ( 'os.listdir') هو أفضل بكثير من الناحية العملية.
وعلى وجه التحديد أود أن أعرف كيفية الأنابيب إلى الثعبان -c
اقتباس فقرة>والأنابيب من خلال برنامج شفاف من وجهة البرنامج وجهة نظر، يعرف كل برنامج هو أنه يزداد مدخلات من تيار الإدخال القياسي
وبصفة عامة، أمر قذيفة من النموذج
A | B
والموجهات إخراج A لتكون مدخلات B
وحتى إذا ويبصق "قوات الدفاع الذاتى الجوية" إلى الإخراج القياسي، ثم B يحصل "قوات الدفاع الذاتى الجوية" في مدخلاته القياسي
وتيار الإدخال القياسي في بيثون هو sys.stdin