OS 모듈에서 일반적으로 사용되는 파일 / 디렉터리 기능
우리가 알고있는 일반적으로 사용되는 운영 체제는 Windows, Mac OS, Linu, Unix 등입니다. 이러한 운영 체제의 기본 운영 원칙은 파일 시스템 액세스에 따라 다르므로 다른 시스템에 사용할 파일을 고려해야 할 수도 있습니다. 모듈 ...이 접근 방식은 프로그램의 운영 환경이 변경되면 그에 따라 많은 코드를 수정해야하기 때문에 매우 비우호적이고 번거 롭습니다.
OS (Operation System) 모듈을 사용하면 어떤 운영 체제에서 어떤 모듈이 사용되는지 신경 쓸 필요가 없습니다. OS 모듈은 올바른 모듈을 선택하고 호출하도록 도와줍니다.
- os.getcwd ()는 현재 작업 디렉토리를 반환하는 데 사용됩니다.
- os.chdir (path)는 현재 작업 디렉토리를 지정된 경로로 변경하는 데 사용됩니다.
import os
path = 'C:\\'
print("当前工作目录 : %s" % os.getcwd())
# 当前工作目录 : C:\Users\Administrator\PycharmProjects\untitled1
os.chdir(path)
print("目录修改成功 : %s" % os.getcwd())
# 目录修改成功 : C:\
- listdir (path = '.')은 경로로 지정된 폴더에 포함 된 파일 또는 폴더의 이름 목록을 반환합니다.
import os
dirs = os.listdir()
for item in dirs:
print(item)
- os.mkdir (path)는 단일 레벨 디렉토리를 생성하고 디렉토리가 이미 존재하는 경우 예외를 발생시킵니다.
import os
if os.path.isdir(r'.\b') is False:
os.mkdir(r'.\B')
os.mkdir(r'.\B\A')
os.mkdir(r'.\C\A') # FileNotFoundError
위 내용을 이해하지 못함
- os.makedirs (path)는 다중 레벨 디렉토리를 재귀 적으로 생성하는 데 사용되며 디렉토리가 이미 존재하는 경우 예외가 발생합니다.
import os
os.makedirs(r'.\E\A')
- os.remove (path)는 지정된 경로에서 파일을 삭제하는 데 사용됩니다. 지정된 경로가 디렉토리이면 OSError가 발생합니다.
[예] 먼저. \ E \ A \ text.txt 파일을 생성 한 후 삭제합니다.
import os
print("目录为: %s" % os.listdir(r'.\E\A'))
os.remove(r'.\E\A\test.txt')
print("目录为: %s" % os.listdir(r'.\E\A'))
- os.rmdir (path)는 단일 레벨 디렉토리를 삭제하는 데 사용됩니다. 이 폴더가 비어있는 경우에만, 그렇지 않으면 OSError가 발생합니다.
[예] 먼저. \ E \ A 디렉토리를 생성 한 후 삭제합니다.
import os
print("目录为: %s" % os.listdir(r'.\E'))
os.rmdir(r'.\E\A')
print("目录为: %s" % os.listdir(r'.\E'))
문자 앞에 r을 추가하여 원시 문자열 상수라고도하는 원시 문자열을 나타냅니다.
- os.removedirs (path) 디렉토리를 재귀 적으로 삭제하고, 하위 디렉토리에서 상위 디렉토리로 계층별로 삭제를 시도하고, 디렉토리가 비어 있지 않으면 예외를 발생시킵니다.
[예] 먼저. \ E \ A 디렉토리를 생성 한 후 삭제합니다.
import os
print("目录为: %s" % os.listdir(os.getcwd()))
os.removedirs(r'.\E\A') # 先删除A 然后删除E
print("目录为: %s" % os.listdir(os.getcwd()))
- os.rename (src, dst) 메서드는 src에서 dst로 파일 또는 디렉토리의 이름을 지정하는 데 사용됩니다 .dst가 기존 디렉토리 인 경우 OSError가 발생합니다.
[예] test.txt 파일의 이름을 test2.txt로 변경합니다.
import os
print("目录为: %s" % os.listdir(os.getcwd()))
os.rename("test.txt", "test2.txt")
print("重命名成功。")
print("目录为: %s" % os.listdir(os.getcwd()))
- os.system (command) 시스템의 쉘 명령을 실행합니다 (문자열을 명령으로 변환)
[예제] 먼저 a.py 파일을 직접 생성 한 다음 쉘 명령으로 엽니 다.
import os
path = os.getcwd() + '\\a.py'
a = os.system(r'python %s' % path)
os.system('calc') # 打开计算器
- os.curdir은 현재 디렉토리 (.)를 나타냅니다.
- os.pardir은 상위 디렉토리 (…)를 나타냅니다.
- os.sep 출력 운영 체제 특정 경로 구분 기호 (\ under win, / under Linux)
- os.linesep 현재 플랫폼에서 사용하는 줄 종결 자 (\ r \ n win, \ n Linux)
- os.name은 현재 사용되는 운영 체제를 나타냅니다 ( 'mac', 'nt'포함).
import os
print(os.curdir) # .
print(os.pardir) # ..
print(os.sep) # \
print(os.linesep)
print(os.name) # nt
- os.path.basename (path) 디렉터리 경로를 제거하고 파일 이름을 별도로 반환합니다.
- os.path.dirname (path) 파일 이름을 제거하고 디렉터리 경로를 별도로 반환합니다.
- os.path.join (path1 [, path2 [,…]]) path1과 path2의 일부를 경로 이름으로 결합
- os.path.split (path)는 파일 이름과 경로를 분할하고 (f_path, f_name)의 튜플을 반환합니다. 디렉토리가 완전히 사용되면 마지막 디렉토리를 파일 이름으로 분리하고 파일 또는 디렉토리가 존재하는지 여부를 판별하지 않습니다.
- os.path.splitext (path)는 파일 이름과 확장자를 분리하고 (f_path, f_name) 튜플을 반환합니다.
import os
# 返回文件名
print(os.path.basename(r'C:\test\lsgo.txt')) # lsgo.txt
# 返回目录路径
print(os.path.dirname(r'C:\test\lsgo.txt')) # C:\test
# 将目录和文件名合成一个路径
print(os.path.join('C:\\', 'test', 'lsgo.txt')) # C:\test\lsgo.txt
# 分割文件名与路径
print(os.path.split(r'C:\test\lsgo.txt')) # ('C:\\test', 'lsgo.txt')
# 分离文件名与扩展名
print(os.path.splitext(r'C:\test\lsgo.txt')) # ('C:\\test\\lsgo', '.txt')
- os.path.getsize (file)는 지정된 파일의 크기를 바이트 단위로 반환합니다.
- os.path.getatime (file)은 지정된 파일의 가장 최근 액세스 시간을 반환합니다.
- os.path.getctime (file)은 지정된 파일의 생성 시간을 반환합니다.
- os.path.getmtime (file)은 지정된 파일의 최신 수정 시간을 반환합니다.
- time 모듈의 gmtime () 또는 localtime () 함수로 변환 할 수있는 부동 소수점 초
import os
import time
file = r'.\lsgo.txt'
print(os.path.getsize(file)) # 30
print(os.path.getatime(file)) # 1565593737.347196
print(os.path.getctime(file)) # 1565593737.347196
print(os.path.getmtime(file)) # 1565593797.9298275
print(time.gmtime(os.path.getctime(file)))
# time.struct_time(tm_year=2019, tm_mon=8, tm_mday=12, tm_hour=7, tm_min=8, tm_sec=57, tm_wday=0,
tm_yday=224, tm_isdst=0)
print(time.localtime(os.path.getctime(file)))
# time.struct_time(tm_year=2019, tm_mon=8, tm_mday=12, tm_hour=15, tm_min=8, tm_sec=57, tm_wday=0,
tm_yday=224, tm_isdst=0)
- os.path.exists (path) 지정된 경로 (디렉토리 또는 파일)가 존재하는지 확인
- os.path.isabs (path) 지정된 경로가 절대 경로인지 확인
- os.path.isdir (path) 지정된 경로가 존재하고 디렉토리인지 확인
- os.path.isfile (path) 지정된 경로가 존재하고 파일인지 확인
- os.path.islink (path) 지정된 경로가 존재하고 심볼릭 링크인지 확인
- os.path.ismount (path) 지정된 경로가 존재하고 중단 지점인지 확인
- os.path.samefile (path1, path2) path1과 path2의 두 경로가 동일한 파일을 가리키는 지 확인합니다.
import os
print(os.path.ismount('D:\\')) # True
print(os.path.ismount('D:\\Test')) # False
자세히 보지 않았다