Python - 임시 파일, 디렉토리 생성

임시 파일(temp file) 또는 디렉토리 생성하는 방법을 소개합니다.

임시 파일 생성 위치는 OS마다 경로가 다를 수 있습니다. 리눅스의 경우 /tmp 경로 아래에 생성됩니다.

1. TemporaryFile : 임시 파일 생성 및 프로그램 종료 시 삭제

TemporaryFile()으로 임시 파일을 생성할 수 있고, close() 호출 또는 프로그램 종료 시, 이 파일은 삭제됩니다.

import os
import tempfile

f = tempfile.TemporaryFile('w+')
f.write('Hello, Python')

f.seek(os.SEEK_SET)
content = f.read()
print(content)

f.close()

Output:

Hello, Python

with를 이용하여 close를 생략할 수 있습니다.

import os
import tempfile

with tempfile.TemporaryFile('w+') as f:
    f.write('Hello, Python')
    f.seek(os.SEEK_SET)
    content = f.read()
    print(content)

2. TemporaryDirectory : 임시 디렉토리 생성 및 프로그램 종료 시 삭제

TemporaryDirectory()는 임시 디렉토리를 생성합니다. close() 호출 또는 프로그램 종료 시 디렉토리는 삭제됩니다.

import tempfile

with tempfile.TemporaryDirectory() as tempDir:
    if os.path.exists(tempDir):
        print('temp dir: ', tempDir)

Output:

temp dir:  /tmp/tmp462zzxf5

3. mkstemp : 임시 파일 생성 및 파일 유지

mkstemp()는 임시 파일을 생성합니다. 하지만 프로그램이 종료되도 파일은 삭제되지 않고 남아있습니다.

파일을 삭제하려면 os.unlink(path)처럼 명시적으로 삭제해야합니다.

import os
import tempfile

fd, path = tempfile.mkstemp()
print('temp path:', path)

with open(path, 'w+') as f:
    f.write('Hello, Python')
    f.seek(os.SEEK_SET)
    content = f.read()
    print(content)

if os.path.exists(path):
    print("exists")

# delete the file
os.unlink(path)

if not os.path.exists(path):
    print("not exists")

Output:

temp path: /tmp/tmpui3ibnl6
Hello, Python
exists
not exists

3.1 파일 이름의 prefix, suffix 설정

mkstemp(prefix='?', suffix='?')으로 prefix와 suffix를 인자로 전달할 수 있습니다. 이 인자는 파일 이름을 만들 때 사용되며, 나머지 문자들만 랜덤으로 정해집니다.

import os
import tempfile

fd, path = tempfile.mkstemp(prefix='test-', suffix='.txt')
print('temp path:', path)

with open(path, 'w+') as f:
    f.write('Hello, Python')
    f.seek(os.SEEK_SET)
    content = f.read()
    print(content)

# delete the file
os.unlink(path)

Output:

temp path: /tmp/test-3x7obsfu.txt
Hello, Python

4. mkdtemp : 임시 디렉토리 생성 및 파일 유지

mkdtemp()는 임시 디렉토리를 생성하고, 이 디렉토리는 프로그램 종료 시 삭제되지 않습니다.

삭제하려면 os.rmdir()처럼 명시적으로 삭제해야 합니다.

import os
import tempfile

path = tempfile.mkdtemp()
print('temp dir path:', path)

if os.path.exists(path):
    print("exists")

# delete empty dir
os.rmdir(path)

if not os.path.exists(path):
    print("not exists")

Output:

temp dir path: /tmp/tmpnxmkx11h
exists
not exists

4.1 디렉토리 이름의 prefix, suffix 설정

mkdtemp()도 임시 디렉토리를 생성할 때, 파일 이름의 prefix, suffix를 설정할 수 있습니다.

import os
import tempfile

path = tempfile.mkdtemp(prefix='test-', suffix='-dir')
print('temp dir path:', path)

# delete empty dir
os.rmdir(path)

Output:

temp dir path: /tmp/test-3xmqyr3p-dir
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha