파이썬에서 디렉토리와 파일을 재귀적으로 순회하는 방법 소개
일상적인 개발에서 우리는 "디렉토리나 폴더" 안에 원하는 파일이나 폴더가 있는지 확인해야 하는 경우가 많습니다. 다음 글에서는 Python이 재귀를 사용하고 walk()디렉터리를 탐색파일을 탐색하는 방법을 주로 소개합니다.
방법 1: 재귀 호출:
[html] view plain copy #!/usr/bin/python #coding:utf8 import os def dirlist(path, allfile): filelist = os.listdir(path) for filename in filelist: filepath = os.path.join(path, filename) if os.path.isdir(filepath): dirlist(filepath, allfile) else: allfile.append(filepath) return allfile print dirlist("/home/yuan/testdir", [])
방법 2:
os.walk()
이 함수는 generator 개체를 사용하여 전체 디렉터리 트리를 탐색합니다.
top은 디렉터리의 최상위 수준을 지정하고, topdown은 디렉터리를 위에서 아래로(기본값) 또는 아래에서 위로 순회할지 여부를 나타내는 부울 값입니다. 반환된 생성기는 튜플(dirpath, dirnames, filenames)을 생성합니다. 여기서 dirpath는 디렉터리 경로를 포함하는 string이고, dirnames는 dirpath에 있는 모든 하위 디렉터리 목록이며, filename은 dirpath A에 있는 파일 이름입니다. 목록(디렉터리 제외) oneerror 인수는 단일 인수를 허용하는 함수입니다.
처리 중 오류가 발생하면 os.error 옵션을 사용하여 이 함수가 호출됩니다. 기본 동작은 오류를 무시하는 것입니다. 디렉터리가 위에서 아래로 순회하는 경우 디렉터리 이름을 수정하면 순회 프로세스에 영향을 미칩니다.
[python] view plain copy #!/user/bin/python #!conding=utf8 import os g = os.walk("/home/yuan/testdir") for path,d,filelist in g: print d; for filename in filelist: print os.path.join(path, filename)
우리는 종종 "디렉터리 또는 폴더" 내에 원하는 파일이나 폴더가 있는지 확인해야 합니다. Python에서는 루프의 모든 파일과 폴더를 순회해야 합니다. 다중 레벨 디렉토리를 포함하는 두 가지 방법이 있는데, 하나는 재귀적 사고를 통과하는 것이고, 다른 하나는 os 모듈의 walk() 함수입니다. 아래에서는 자세히 살펴보겠습니다. 자세한 소개에서:
1. 재귀적 방법
#coding:utf-8 import os allfile=[] def getallfile(path): allfilelist=os.listdir(path) for file in allfilelist: filepath=os.path.join(path,file) #判断是不是文件夹 if os.path.isdir(filepath): getallfile(filepath) allfile.append(filepath) return allfile if name == 'main': path="C:\Users\zs\PycharmProjects\demo" allfiles=getallfile(path) for item in allfiles: print item #结果 C:\Users\zs\PycharmProjects\demo\.idea\demo.iml C:\Users\zs\PycharmProjects\demo\.idea\encodings.xml C:\Users\zs\PycharmProjects\demo\.idea\misc.xml C:\Users\zs\PycharmProjects\demo\.idea\modules.xml C:\Users\zs\PycharmProjects\demo\.idea\workspace.xml C:\Users\zs\PycharmProjects\demo\.idea C:\Users\zs\PycharmProjects\demo\functiondemo.py C:\Users\zs\PycharmProjects\demo\index.py C:\Users\zs\PycharmProjects\demo\locale\en_US\LC_MESSAGES\django.po C:\Users\zs\PycharmProjects\demo\locale\en_US\LC_MESSAGES C:\Users\zs\PycharmProjects\demo\locale\en_US C:\Users\zs\PycharmProjects\demo\locale\zh_CN\LC_MESSAGES\lang.mo C:\Users\zs\PycharmProjects\demo\locale\zh_CN\LC_MESSAGES\lang.po C:\Users\zs\PycharmProjects\demo\locale\zh_CN\LC_MESSAGES C:\Users\zs\PycharmProjects\demo\locale\zh_CN C:\Users\zs\PycharmProjects\demo\locale C:\Users\zs\PycharmProjects\demo\name.txt C:\Users\zs\PycharmProjects\demo\text.txt
모든 폴더의 내용, 디렉토리 자체 메소드인 경우 계속 호출합니다.
2.os 모듈의 walk() 함수
os.walk(top, topdown=True, onerror=None, followlinks=False)
은 3개 요소 튜플(dirpath, dirnames, filenames),
dirpath: 나열되도록 지정 디렉터리 경로
dirnames: 디렉터리
아래의 모든 폴더filenames: 디렉터리
아래의 모든 파일 매개변수 1: top – 루트 디렉터리 아래의 모든 폴더(자체 포함)는 3-을 생성합니다. 튜플 (dirpath, dirnames, filenames) [폴더 경로, 폴더 이름, 파일 이름].
매개변수 2: topdown – 선택 사항, True 또는 지정되지 않음, 디렉터리의 3-튜플은 하위 폴더의 3-튜플(디렉터리 위에서 아래로)보다 먼저 생성됩니다. topdown이 False인 경우 디렉터리의 3-튜플은 해당 하위 폴더(디렉터리 아래에서 위로)의 3-튜플 다음에 생성됩니다.
매개변수 3: onerror - 선택 사항이며 호출 시 하나의 매개변수인 OSError 인스턴스를 갖습니다. 이 오류를 보고한 후 걷기를 계속하거나 예외를 던져 걷기를 종료합니다.
매개변수 4: followlinks - true로 설정하면 소프트 링크를 통해 디렉토리에 액세스합니다.
#coding:utf-8 import os def getallfiles(path): allfile=[] for dirpath,dirnames,filenames in os.walk(path): for dir in dirnames: allfile.append(os.path.join(dirpath,dir)) for name in filenames: allfile.append(os.path.join(dirpath, name)) return allfile if name == 'main': path = "C:\Users\zs\PycharmProjects\demo" allfile=getallfiles(path) for file in allfile: print file #输出结果 C:\Users\zs\PycharmProjects\demo\.idea C:\Users\zs\PycharmProjects\demo\locale C:\Users\zs\PycharmProjects\demo\functiondemo.py C:\Users\zs\PycharmProjects\demo\index.py C:\Users\zs\PycharmProjects\demo\name.txt C:\Users\zs\PycharmProjects\demo\text.txt C:\Users\zs\PycharmProjects\demo\.idea\demo.iml C:\Users\zs\PycharmProjects\demo\.idea\encodings.xml C:\Users\zs\PycharmProjects\demo\.idea\misc.xml C:\Users\zs\PycharmProjects\demo\.idea\modules.xml C:\Users\zs\PycharmProjects\demo\.idea\workspace.xml C:\Users\zs\PycharmProjects\demo\locale\en_US C:\Users\zs\PycharmProjects\demo\locale\zh_CN C:\Users\zs\PycharmProjects\demo\locale\en_US\LC_MESSAGES C:\Users\zs\PycharmProjects\demo\locale\en_US\LC_MESSAGES\django.po C:\Users\zs\PycharmProjects\demo\locale\zh_CN\LC_MESSAGES C:\Users\zs\PycharmProjects\demo\locale\zh_CN\LC_MESSAGES\lang.mo C:\Users\zs\PycharmProjects\demo\locale\zh_CN\LC_MESSAGES\lang.po
Summary
두 가지 방법의 입력 결과는 동일합니다. 하지만 입력 순서에는 차이가 있습니다. 그에 비해 파이썬 os 모듈의 walk() 메소드는 상대적으로 간단하다고 느껴집니다
위 내용은 파이썬에서 디렉토리와 파일을 재귀적으로 순회하는 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

이 기사는 데비안 시스템에서 Apache Logs를 분석하여 웹 사이트 성능을 향상시키는 방법을 설명합니다. 1. 로그 분석 기본 사항 Apache Log는 IP 주소, 타임 스탬프, 요청 URL, HTTP 메소드 및 응답 코드를 포함한 모든 HTTP 요청의 자세한 정보를 기록합니다. 데비안 시스템 에서이 로그는 일반적으로 /var/log/apache2/access.log 및 /var/log/apache2/error.log 디렉토리에 있습니다. 로그 구조를 이해하는 것은 효과적인 분석의 첫 번째 단계입니다. 2. 로그 분석 도구 다양한 도구를 사용하여 Apache 로그를 분석 할 수 있습니다.

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

개발 환경과 생태계에서 Laravel과 Python의 비교는 다음과 같습니다. 1. Laravel의 개발 환경은 간단하며 PHP와 작곡가 만 필요합니다. Laravelforge와 같은 풍부한 확장 패키지를 제공하지만 확장 패키지 유지 보수는시기 적절하지 않을 수 있습니다. 2. 파이썬의 개발 환경도 간단하며 파이썬과 PIP 만 필요합니다. 생태계는 거대하고 여러 분야를 다루지 만 버전 및 종속성 관리는 복잡 할 수 있습니다.

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

이 기사에서는 DDOS 공격 탐지 방법에 대해 설명합니다. "Debiansniffer"의 직접적인 적용 사례는 발견되지 않았지만 DDOS 공격 탐지에 다음과 같은 방법을 사용할 수 있습니다. 효과적인 DDOS 공격 탐지 기술 : 트래픽 분석을 기반으로 한 탐지 : 갑작스런 트래픽 성장, 특정 포트에서의 연결 감지 등의 비정상적인 네트워크 트래픽 패턴을 모니터링하여 DDOS 공격을 식별합니다. 예를 들어, Pyshark 및 Colorama 라이브러리와 결합 된 Python 스크립트는 실시간으로 네트워크 트래픽을 모니터링하고 경고를 발행 할 수 있습니다. 통계 분석에 기반한 탐지 : 데이터와 같은 네트워크 트래픽의 통계적 특성을 분석하여

이 기사에서는 Debian 시스템에서 NginxSSL 인증서를 업데이트하는 방법에 대해 안내합니다. 1 단계 : CertBot을 먼저 설치하십시오. 시스템에 CERTBOT 및 PYTHON3-CERTBOT-NGINX 패키지가 설치되어 있는지 확인하십시오. 설치되지 않은 경우 다음 명령을 실행하십시오. sudoapt-getupdatesudoapt-getinstallcertbotpython3-certbot-nginx 2 단계 : 인증서 획득 및 구성 rectbot 명령을 사용하여 nginx를 획득하고 nginx를 구성하십시오.

데비안 시스템의 readdir 함수는 디렉토리 컨텐츠를 읽는 데 사용되는 시스템 호출이며 종종 C 프로그래밍에 사용됩니다. 이 기사에서는 ReadDir를 다른 도구와 통합하여 기능을 향상시키는 방법을 설명합니다. 방법 1 : C 언어 프로그램을 파이프 라인과 결합하고 먼저 C 프로그램을 작성하여 readDir 함수를 호출하고 결과를 출력하십시오.#포함#포함#포함#포함#includinTmain (intargc, char*argv []) {dir*dir; structdirent*entry; if (argc! = 2) {
