2014-05-14 3 views
2

에서 총 라인 카운트지고 : 상기 예에서다음 예를 고려 subprocess.popen

P1 = subprocess.Popen(stdout=subprocess.PIPE, stderr=subprocess.PIPE) 

    P1.stdout.readLines() 

을는 I에 의해 라인을 반복 할 수 있기 때문에 (P1)로부터 출력 된 라인 수를 카운트 할 수있다 줄을 p1.stdout.readLines(),

을 사용하여하지만 그게 내가 원하는 건 아니에요, 나는 출력으로 총 라인 수를 필요 ...이 시나리오가 가능합니까?

답변

3

예!

lines = P1.stdout.readLines() 
no_of_lines = len(lines) 

을 또는 당신은 단순히 수행 할 수 있습니다 : len() 예컨대 사용

>>> from subprocess import Popen, PIPE 
>>> p = Popen(["ls", "-1", "/usr/local/bin"], stdout=PIPE) 
>>> sum(1 for _ in p.stdout) 
493 

이 방법은 발전기 식을 소모하고 그것을 aums로 len()에 다른 비트입니다. 즉, p1.stdout의 모든 행에 대해 1의 시퀀스의 합계를주세요.

파이썬에서 반복을 지원하는 많은 객체도 len() 함수를 지원합니다.

  • 목록
  • 유니 코드/STR/바이트를

을 설정

  • DICT 이러한 개체는 모든 __len__하는 len() 사용을 구현합니다.

    이것은 Duck Typing라고하며 파이썬에서 가장 유용한 타이핑 분야 중 하나입니다!