이전 섹션에서는 os.system() 함수가 잘 작동하는 것을 보았습니다. 그러나 셸 명령을 실행하는 방법은 권장되지 않습니다. 우리는 시스템 명령을 실행하기 위해 파이썬 하위 프로세스 모듈을 사용합니다. execvp 함수는 시스템에서 다른 명령을 실행하는 방법 중 하나입니다. 다음 예제를 살펴보겠습니다. os.system을 사용하여 특정 명령을 실행할 수 있으며, 이 경우 + 연산자, 문자열 서식(.format()), 문자열 대체 또는 다른 방법을 사용하여 두 문자열을 조인할 수 있습니다. 나는 그 특정 명령에 대한 답변을 원하지 않지만 일반적으로 알고 싶지만 예제를 사용하려는 경우 종료 를 사용하여 디렉토리를 재귀적으로 제거하십시오. 리프 디렉토리가 성공적으로 제거된 경우 removedirs()는 오류가 발생될 때까지 경로에 언급된 모든 상위 디렉터리(일반적으로 부모 디렉터리가 제거되지 않음)를 연속적으로 제거하려고 시도하는 경우를 제외하고는 rmdir()와 같은 작동을 의미합니다. 비어 있습니다). 예를 들어 os.removedirs(`foo/bar/baz`)는 먼저 디렉토리 `foo/bar/baz`를 제거한 다음 비어 있는 경우 `foo/bar`와 `foo`를 제거합니다.

리프 디렉터리를 성공적으로 제거할 수 없는 경우 OSError를 발생 시요. cmd = “에코 -e”abcncde” [파일” os.system(cmd) 경로에 대해 디렉토리를 지정할 수 있는지 여부는 운영 체제가 디렉터리를 파일로 구현하는지 여부에 따라 달라집니다(예: Windows는 그렇지 않음). 여기서 설정한 정확한 시간은 운영 체제에서 액세스 및 수정 시간을 기록하는 해상도에 따라 후속 stat() 호출에 의해 반환되지 않을 수 있습니다. 통계()를 참조하십시오. 정확한 시간을 보존하는 가장 좋은 방법은 os.stat() 결과 개체의 st_atime_ns 및 st_mtime_ns 필드를 사용하여 ns 매개 변수를 utime에 사용하는 것입니다. 다음 예제에서는 트리 상향 식 을 걷는 것이 필수적입니다: rmdir() 디렉터리가 비어 있기 전에 디렉터리 삭제를 허용하지 않습니다: 파일 설명자는 현재 프로세스에서 열린 파일에 해당하는 작은 정수입니다. 예를 들어 표준 입력은 일반적으로 파일 설명자 0이고 표준 출력은 1이고 표준 오차는 2입니다. 그런 다음 프로세스에 의해 열린 추가 파일은 3, 4, 5 등으로 할당됩니다. “파일 설명자”라는 이름은 약간 기만적입니다. 유닉스 플랫폼에서 소켓과 파이프는 파일 설명자에서도 참조됩니다. 환경은 함수가 아니라 시스템의 환경 변수에 액세스할 수 있는 프로세스 매개 변수입니다. 다음 예제를 살펴보겠습니다.

그러나 사용자가 명령 5를 입력하는 경우를 고려하십시오. RM -rf / 또는 다른 악의적 인 명령. os.system을 사용하는 대신 하위 프로세스를 사용하는 경우 다음 예제를 편리하게 찾을 수 있습니다. 예를 들어 문자열 서식: 문자열 환경을 나타내는 매핑 개체입니다. 예를 들어, environ[`HOME`]은 홈 디렉토리(일부 플랫폼)의 경로 이름이며 C의 getenv(“HOME”)와 동일합니다.