بيثون بطانة واحدة لطباعة كل الملفات في الدليل الحالي

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

  •  03-07-2019
  •  | 
  •  

سؤال

كيف يمكنني جعل التالية واحدة بطانة طباعة كل ملف من خلال الثعبان ؟

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

في cobbal الجواب

والأنابيب من خلال برنامج شفاف من وجهة البرنامج وجهة نظر، يعرف كل برنامج هو أنه يزداد مدخلات من تيار الإدخال القياسي

وبصفة عامة، أمر قذيفة من النموذج

A | B

والموجهات إخراج A لتكون مدخلات B

وحتى إذا ويبصق "قوات الدفاع الذاتى الجوية" إلى الإخراج القياسي، ثم B يحصل "قوات الدفاع الذاتى الجوية" في مدخلاته القياسي

وتيار الإدخال القياسي في بيثون هو sys.stdin

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