모든 하위 디렉터리를 포함하여 디렉터리의 모든 로그 파일 (.log) 목록을 가져 오려고합니다.모든 하위 디렉터리를 포함하여 디렉터리의 파일을 가져 오는 방법
답변
체크 아웃 Python Recursive Directory Walker. 간단히 말해 os.listdir()과 os.walk()는 친구입니다. 다만이 결과를 얻기 위해 다른 경로로
os.getcwd()
을 변경
import os
for e in os.walk(os.getcwd()):
print e
: 당신은 현재 디렉토리에 나열 할 경우
import os
import os.path
for dirpath, dirnames, filenames in os.walk("."):
for filename in [f for f in filenames if f.endswith(".log")]:
print os.path.join(dirpath, filename)
"."과 다른 디렉토리에서 검색하려면 direcotry를 sys.argv [1]로 전달하고 os.walk (sys.argv [1])를 호출 할 수 있습니다. –
추가 개선 사항 : list comprehension 대신 generator 사용 : filename in (f ... f의 경우) –
특정 디렉토리 (예 :'old_logs ')를 제외하려면'dirnames'에서 제거하면됩니다. 'dirnames.remove ("old_logs")' – CGFoX
os.walk와 함께 glob 모듈을 사용할 수도 있습니다.
import os
for logfile in os.popen('find . -type f -name *.log').read().split('\n')[0:-1]:
print logfile
또는이 두
import subprocess
(out, err) = subprocess.Popen(["find", ".", "-type", "f", "-name", "*.log"], stdout=subprocess.PIPE).communicate()
for logfile in out.split('\n')[0:-1]:
print logfile
이
find . -type f -name *.log
의 장점을 가지고 :
import os
from glob import glob
files = []
start_dir = os.getcwd()
pattern = "*.log"
for dir,_,_ in os.walk(start_dir):
files.extend(glob(os.path.join(dir,pattern)))
for-loop에서 밑줄 문자는 무엇을합니까? '_' –
@nueverest'os.walk'는 매 반복마다 3 개의 튜플 (dirpath, dirnames, filenames)를 반환하며'dirpath' (위의'dir '에 할당 됨)에만 관심이 있습니다. 밑줄은 우리가 관심이없는 다른 두 개의 값 (즉,'dirnames', 그리고'filenames', 변수'_'에 할당됩니다. 우리는 결코 사용하지 않을 것입니다)의 자리 표시 자로 사용됩니다. – tavnab
나는 해결책을 가지고 있습니다.
첫 번째는 간단하지만 -name *.log
, 을 추가하지만, (내 OS X의 환경에서) 단순히 find ../testdata -type f
을 위해 잘 작동 할 때 공백에 대한 을 보장하지 않습니다.
두 번째 서브 프로세스를 사용하는 것이 더 복잡해 보이지만 이것은 공백으로 안전합니다 (내 OS X 환경에서).
이
는 크리스 무리,이 질문에 대해 에서 영감을 https://stackoverflow.com/a/3503909/2834102- 1. 모든 하위 단위를보다 효율적으로 가져 오는 방법
- 2. 파일을 가져 오는 방법
- 3. 루프를 통해 SQL Server의 디렉터리에서 하위 디렉터리를 가져 오는 방법은 무엇입니까?
- 4. 디렉터리의 파일 크기를 가져 오는 중
- 5. T4에서 프로젝트 디렉터리를 가져 오는 방법은 무엇입니까?
- 6. PowerShell FileInfo에서 하위 디렉터리의 파일을 출력합니다.
- 7. Carrierwave로 파일을 가져 오는 방법
- 8. 서버에서 파일을 가져 오는 방법
- 9. * .SQL 파일을 가져 오는 방법
- 10. 클래스의 모든 하위 클래스를 가져 오는 방법 (AS3)
- 11. 하위 클래스의 항목을 포함하여 App Engine 모델 클래스의 모든 항목을 가져 오는 방법은 무엇입니까?
- 12. 주어진 카테고리의 하위 카테고리를 가져 오는 방법
- 13. DLL의 디렉터리를 가져 오기
- 14. WPF : 하위 항목에서 리소스를 가져 오는 방법
- 15. 탭의 하위 뷰에서 tabController를 가져 오는 방법
- 16. 모든 파일을 포함하여 C#에서 프로그램 시작
- 17. 날짜 스탬프가있는 디렉터리를 복사하는 방법
- 18. Mercurial - 버전없는 파일을 포함하여 모든 로컬 변경 내용을 취소하는 방법?
- 19. 셸 스크립트가 모든 하위 디렉터리를 탐색하고 파일 내용 수정
- 20. USB를 사용하여 장치에서 파일을 가져 오는 방법
- 21. 목록보기 wpf에서 모든 행을 가져 오는 방법
- 22. 디렉토리의 모든 확장자를 가져 오는 방법.
- 23. JQuery 메뉴에서 모든 값을 가져 오는 방법
- 24. Facebook에서 모든 일정을 가져 오는 방법 페이지
- 25. 게시물의 모든 변수를 가져 오는 방법 (PHP)
- 26. Windows 폴더를 사용하여 하위 폴더를 통해 재귀하는 동안 하위 폴더의 첫 번째 파일을 가져 오는 방법
- 27. 하위 뷰를 포함하여 HorizontalScrollView 길이를 계산하는 방법
- 28. 디렉토리에 ESY 확장자가있는 모든 파일의 목록을 가져 오는 방법은 무엇입니까?
- 29. TFS의 tbl_Content 테이블에서 파일을 가져 오는 방법
- 30. Python의 디렉토리에서 파일을 가져 오는 방법
이 이미 요청되었습니다 http://stackoverflow.com/questions/837606/find-the-oldest-file-recursively-in- (검색 상자에 'Python walk'검색) –