Python의 OS 모듈 및 예제를 사용하는 방법

PHPz
풀어 주다: 2023-04-22 22:19:17
앞으로
2939명이 탐색했습니다.

Python의 os 모듈은 운영 체제와 상호 작용하는 데 사용되는 표준 라이브러리 중 하나입니다. 파일 및 디렉터리 작업에 유용한 많은 기능과 변수를 제공합니다. 다음은 몇 가지 일반적인 OS 모듈 기능의 사용법입니다:

1. 현재 작업 디렉터리 가져오기:

import os
cwd = os.getcwd()
print(cwd)
로그인 후 복사

2. 현재 작업 디렉터리 전환:

import os
os.chdir('/path/to/new/directory')
로그인 후 복사

3 디렉터리의 모든 파일과 하위 디렉터리 나열:

import os
files = os.listdir('/path/to/directory')
print(files)
로그인 후 복사

4. 주어진 경로가 디렉토리인지 확인하십시오:

import os
path = '/path/to/directory'
if os.path.isdir(path):
    print("It's a directory")
else:
    print("It's not a directory")
로그인 후 복사

5. 주어진 경로가 파일인지 확인하십시오:

import os
path = '/path/to/file'
if os.path.isfile(path):
    print("It's a file")
else:
    print("It's not a file")
로그인 후 복사

6. 파일 크기를 바이트 단위로 가져오십시오:

import os
path = '/path/to/file'
size = os.path.getsize(path)
print(size)
로그인 후 복사

7. 파일 존재 여부:

import os
path = '/path/to/file_or_directory'
if os.path.exists(path):
    print("It exists")
else:
    print("It doesn't exist")
로그인 후 복사

8. 새 디렉터리 만들기:

import os
path = '/path/to/new/directory'
os.mkdir(path)
로그인 후 복사

9. 새 디렉터리 만들기(디렉토리가 없는 경우):

import os
path = '/path/to/new/directory'
os.makedirs(path, exist_ok=True)
로그인 후 복사

10. 파일 삭제:

import os
path = '/path/to/file_or_directory'
os.remove(path)
로그인 후 복사

11. 디렉터리와 해당 내용을 반복적으로 삭제합니다.

import os
path = '/path/to/directory'
os.system('rm -rf ' + path)
로그인 후 복사

다른 편리한 용도:

12.os.path.splitext() 메서드는 경로를 파일 이름과 확장명의 두 부분으로 분할하는 것입니다. 파일 이름과 확장자를 구분하는 구분 기호로 파일 이름의 마지막 "."을 사용합니다. 예를 들어 파일 경로가 "/path/to/file.txt"인 경우 os.path.splitext() 메서드는 튜플("/path/to/file", ".txt")을 반환합니다.

파일 이름에 "."가 없으면 반환되는 확장자는 빈 문자열이라는 점에 유의하세요. 파일 이름이 "."로 시작하면 확장자가 없는 파일로 간주되며 os.path.splitext() 메서드는 (파일 경로, '')를 반환합니다.

다음은 예입니다.

import os
path = '/path/to/file.txt'
file_name, ext = os.path.splitext(path)
print('文件名为:', file_name)
print('扩展名为:', ext)
로그인 후 복사

출력 결과:

파일 이름: /path/to/file
확장자: .txt

13 파일 권한 설정:

import os
os.chmod('/path/to/file', 0o777) # 设置读、写、执行权限
로그인 후 복사

os .chmod( ) 메소드를 사용하여 파일이나 디렉토리의 액세스 권한을 수정할 수 있습니다. 파일 경로와 새 권한 모드라는 두 가지 매개변수를 허용합니다. 권한 모드는 8진수로 표시될 수 있으며, 각 비트는 서로 다른 권한을 나타냅니다.

다음은 권한 패턴의 몇 가지 예입니다.

  • 0o400: 읽기 전용 권한

  • 0o200: 쓰기 권한

  • 0o100: 실행 권한

  • 0o700: 모든 권한

14. CPU 수:

import os
cpu_count = os.cpu_count()
print('CPU数量为:', cpu_count)
로그인 후 복사

os.cpu_count()가 반환하는 CPU 수는 물리적 CPU 코어 수이며 하이퍼스레딩 기술의 가상 코어는 포함하지 않는다는 점에 유의해야 합니다. 하이퍼 스레딩 기술을 사용하는 시스템에서 각 물리적 CPU 코어는 두 개의 가상 코어로 나누어지므로 os.cpu_count() 메서드는 실제 CPU 코어 수보다 큰 수를 반환할 수 있습니다.

또한 os.cpu_count() 메서드는 운영 체제에 따라 다르게 구현될 수 있습니다. 일부 운영 체제에서는 물리적 CPU 코어 수가 아닌 논리적 CPU 코어 수만 반환할 수 있습니다. 따라서 이 방법을 사용할 때 자세한 내용은 관련 문서를 참조하는 것이 가장 좋습니다.

15. 새 프로세스 시작:

import os
os.system('notepad.exe')
로그인 후 복사

os.system() 메서드는 운영 체제에서 명령을 실행하고 명령의 종료 상태 코드를 반환할 수 있습니다. 해당 매개변수는 유효한 시스템 명령이 될 수 있는 문자열 유형 명령입니다.

다음은 os.system() 메서드를 사용하여 간단한 명령을 실행하는 방법을 보여주는 예입니다.

import os
os.system('echo "Hello, World!"')
로그인 후 복사

위 코드는 Hello, World! 문자열을 출력하고 명령의 종료 상태 코드를 반환합니다(보통 0 성공으로 표시됨).

os.system() 메서드는 명령 실행이 완료될 때까지 현재 프로세스를 차단한다는 점에 유의해야 합니다. 현재 프로세스를 차단하지 않고 명령을 실행하려면 subprocess.Popen()과 같은 subprocess 모듈의 다른 메서드를 사용하는 것을 고려할 수 있습니다.

다음은 wget을 사용하여 Linux 시스템에서 파일을 다운로드하는 등 복잡한 명령을 실행하기 위해 os.system() 메서드를 사용하는 방법을 보여주는 또 다른 예입니다.

import os
url = 'https://example.com/file.zip'
output_dir = '/path/to/output'
command = f'wget {url} -P {output_dir}'
os.system(command)
로그인 후 복사

위 코드는 다음에서 지정한 파일을 다운로드합니다. url 매개변수를 output_dir 매개변수에 의해 지정된 디렉토리로 전달하고 명령의 종료 상태 코드를 반환합니다.

16.os.environ: 현재 환경 변수가 포함된 사전입니다. os.environ[key]를 사용하여 특정 환경 변수의 값을 가져올 수 있습니다.

17.os.exec*(): 이 메서드를 사용하면 Python 프로그램이 현재 프로세스에서 다른 프로그램을 실행하여 현재 프로세스를 대체할 수 있습니다. 예를 들어, os.execv() 메서드는 지정된 매개변수 목록을 사용하여 프로그램을 실행하여 현재 프로세스를 대체할 수 있습니다.

18.os.fork(): 이 방법은 프로그램의 병렬 실행을 위해 Unix 또는 Linux 운영 체제에서 하위 프로세스를 생성할 수 있습니다. 하위 프로세스는 코드, 데이터, 스택 등을 포함하여 상위 프로세스의 모든 메모리 내용을 복사하므로 프로그램은 상위 프로세스를 기반으로 계속 실행할 수 있습니다.

19.os.kill(): 이 메서드는 지정된 프로세스에 신호를 보내는 데 사용됩니다. os.kill(pid, signal) 메소드를 사용하여 지정된 프로세스에 지정된 신호를 보낼 수 있습니다. 일반적으로 사용되는 신호에는 SIGINT(인터럽트 신호), SIGTERM(종료 신호) 및 SIGKILL(강제 종료 신호) 등이 있습니다.

20.os.pipe(): 이 메서드는 프로세스 간 통신을 위한 파이프를 생성할 수 있습니다. os.pipe() 메서드는 두 개의 파일 설명자를 반환합니다. 하나는 파이프 데이터를 읽기 위한 것이고 다른 하나는 파이프 데이터를 쓰기 위한 것입니다.

21.os.wait(): 이 메서드는 하위 프로세스가 끝날 때까지 기다린 다음 하위 프로세스의 상태 코드를 반환할 수 있습니다. os.waitpid(pid, options) 메소드를 사용하여 지정된 프로세스가 종료될 때까지 기다리고 프로세스의 상태 코드를 반환할 수 있습니다.

22.os模块可以用来操作文件路径。例如,os.path.join(path, *paths)可以将多个路径拼接成一个完整路径,os.path.abspath(path)可以将相对路径转换为绝对路径,os.path.split(path)可以将路径分割成目录和文件名。

23.遍历目录树

import os
def list_files(path):
    for root, dirs, files inos.walk(path):
        for file in files:
            print(os.path.join(root, file))
list_files('.')
로그인 후 복사

这段代码可以遍历当前工作目录及其子目录下的所有文件,并打印出它们的完整路径。

os.walk()是os模块中一个非常有用的函数,用于遍历指定目录及其子目录下的所有文件和目录。它返回一个三元组(root, dirs, files),其中root是当前目录的路径,dirs是当前目录下的子目录列表,files是当前目录下的文件列表。下面是一个os.walk()的详细解释和示例:

for root, dirs, files in os.walk(top, topdown=True, onerror=None, followlinks=False):
    # Do something with root, dirs, and files
로그인 후 복사

top是指定的目录路径,可以是相对路径或绝对路径。

  • topdown是一个布尔值,表示遍历时是否先遍历当前目录,再遍历子目录。如果为True(默认值),则先遍历当前目录,再遍历子目录;如果为False,则先遍历子目录,再遍历当前目录。

  • onerror是一个可选的错误处理函数,如果在遍历过程中出现错误,则会调用这个函数。

  • followlinks是一个布尔值,表示是否跟随符号链接。如果为True,则会跟随符号链接遍历目录;如果为False(默认值),则会忽略符号链接。

在遍历过程中,os.walk()会依次遍历指定目录及其子目录下的所有文件和目录,并返回当前目录的路径、子目录列表和文件列表。可以通过遍历返回的三元组来处理目录和文件。例如,可以使用下面的代码列出指定目录下的所有文件和子目录:

import os
 
def list_files_and_dirs(path):
    for root, dirs, files in os.walk(path):
        print(f'Directory: {root}')
        for file in files:
            print(f'  File: {os.path.join(root, file)}')
        for dir in dirs:
            print(f'  Subdirectory: {os.path.join(root, dir)}')
 
list_files_and_dirs('.')
로그인 후 복사

这段代码会遍历当前工作目录及其子目录下的所有文件和目录,并输出相应的信息。

需要注意的是,os.walk()只会遍历当前目录及其子目录下的文件和目录,不会遍历符号链接所指向的文件或目录。如果需要遍历符号链接所指向的文件或目录,需要设置followlinks=True。

위 내용은 Python의 OS 모듈 및 예제를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿