검색 및 os.popen() + read() 및 subprocess.check_output() 두 가지 테스트가 모두 실행 된 후 거의 동일한 것으로 보입니다 폴더의 내용 os.popen() + read() 또는 subprocess.check_output() 중 하나를 개선하는 방법이 있습니까? 나는 ls
폴더 수와 출력을 읽어야하고 위의 두 가지 중 하나를 사용하는 것은 비슷하지만 프로파일 링 결과에 따라 주요 병목 현상을 나타냅니다.서브 프로세스에서 "ls"를 호출하는 것보다 빠르게 디렉토리 목록을 얻는 방법
답변
os.listdir 및/또는 os.walk과 os.stat 제품군을 찾고 있습니다. 이들은 ls
이 사용하는 것과 동일한 프리미티브 (파이썬 바인딩)이므로 ls
의 결과를 구문 분석하여 수행 할 수있는 모든 작업을 수행 할 수 있습니다. os, os.path 및 stat 모듈이 제공하는 모든 것을주의 깊게 읽으시기 바랍니다. 당신이 할 외부 프로그램이 필요없는 다른 것들이있을 수 있습니다.
stat
, the underlying system call의 설명서를 읽어야합니다. C 지향이지만 실제로는 os.stat
이 무엇인지 이해하는 데 도움이됩니다.
오, 그래, os.listdir 정확히 내가 필요로하는 것입니다! 이제 os 모듈에 대해 철저하게 읽을 것입니다 ... 어떤 이유로 저는 서브 프로세스 문서 만 검사했습니다. 고맙습니다! – melnikovkolya
os.listdir
으로 디렉토리 내용을 직접 읽지 않는 이유는 무엇입니까? 왜 ls
으로 외출해야합니까? 파일 이름 외에도 파일에 대한 자세한 정보가 필요하면 os.stat
을 사용할 수도 있습니다. 서브 프로세스를 작성하는 것보다 시스템 호출을 직접 수행하는 것이 훨씬 효율적입니다.
전체적으로 디렉토리 탐색을 수행하는 경우 os.walk
이 있습니다. shutil
module에는 유용한 기능이 있습니다.
감사합니다. 지금하고있다 :) – melnikovkolya
'glob' 모듈은 당신이 필요로하는 것에 따라 유용한 바로 가기를 제공한다. –
사용 글로브는 :
>>> from glob import glob
>>> glob('*')
구문은 동일합니다.
glob('*.txt') # the same as "ls *.txt"
- 1. cygwin perl에서 디렉토리 (및 내용) 크기를 빠르게 얻는 방법
- 2. 서브 프로세스에서 bash 함수 호출하기
- 3. 백그라운드 프로세스에서 결과를 얻는 방법
- 4. glCallLists는 한 번에 하나씩 디스플레이 목록을 호출하는 것보다 효율적입니까?
- 5. 리눅스, 서브 프로세스에서 시간 초과
- 6. C로 디렉토리 목록을 얻는 방법은 무엇입니까?
- 7. 전체 디렉토리 목록을 다운로드하는 방법?
- 8. Delphi - 디렉토리의 모든 파일 목록을 얻는 방법
- 9. 다른 호스트의 서브 디렉토리
- 10. 서브 디렉토리 얻기
- 11. 파이썬에서 서브 프로세스로부터 환경을 얻는 방법
- 12. 디렉토리와 서브 디렉토리에서 ftl 파일을 얻는 방법
- 13. 파이썬은 라인 단위로 서브 프로세스에서 stdout을 캡쳐합니다.
- 14. 다른 창에서 공용 서브 함수를 호출하는 방법
- 15. 서브 패키지가 서로 다른 Autoconf 서브 디렉토리?
- 16. .NET을 통해 Messenger 연락처 목록을 얻는 방법
- 17. Android에서 언어 목록을 얻는 방법
- 18. joomla 언어 목록을 얻는 방법
- 19. 상호 친구 목록을 얻는 방법
- 20. 시스템의 측면 목록을 얻는 방법
- 21. Drupal : 모듈 목록을 얻는 방법
- 22. MS Access에서보기 목록을 얻는 방법
- 23. .Net에서 로케일 목록을 얻는 방법
- 24. tcl에서 배열 목록을 얻는 방법
- 25. symfony에서 모듈 목록을 얻는 방법
- 26. webdav에서 svn 디렉토리 목록을 반환하는 방법
- 27. 디렉토리 목록을 xml 파일에 저장하는 방법 C#
- 28. LINQ는 저장 프로 시저를 호출하는 것보다 느립니까?
- 29. git 저장소에서 삭제 된 디렉토리 목록을 얻는 방법은 무엇입니까?
- 30. RSpec을 사용하여 디렉토리 내의 파일 목록을 얻는 방법을 테스트하려면 어떻게해야합니까?
귀하의 질문의 제목이 내가 이해하고있는 내용을보다 분명하게 수정했습니다. 원본 제목은 하위 프로세스를 사용하고있는 것을 나타내지 않았으므로 사람들이 답장을하지 못하게 할 수 있습니다. – zwol