현재 디렉토리의 모든 파일을 인쇄 할 파이썬 1 라이너
문제
Python을 통해 다음 하나의 라이너를 모든 파일로 인쇄하려면 어떻게해야합니까?
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 스크립트에서 데이터를 파이핑하는 예에서 나옵니다.
다른 팁
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:]"
또는 백틱 :
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 ">>"
">>"와 echo의 $ 경로 사이의 공간을 원하지 않는다면
find . -type f -maxdepth 1 | xargs -L 1 printf ">>%s\n"
물론 이것은 모두 Cygwin을 사용하고 있습니다.
ls | python -c "import sys; print sys.stdin.read()"
파이프의 경우 Stdin을 평소처럼 읽으십시오
그래도 파이프하는 방법을 알고 싶습니다
파이프에 잘못된 길을 가졌습니다. 'Dir'의 출력을 Python에 공급하려면 'Dir'가 왼쪽에 있어야합니다. 예를 들어 :
dir "*.*" | python -c "import sys;[sys.stdout.write('>>%s\n' % line) for line in sys.stdin]"
(목록 이해력이있는 해킹은 세미콜론 이후 한 줄에 '진술'에 대한 블록을 소개하지 않기 때문입니다.)
분명히 Python-Native 솔루션 ( 'OS.Listdir')은 실제로 훨씬 좋습니다.
제휴하지 않습니다 StackOverflow