>  기사  >  백엔드 개발  >  Python 임시 파일을 올바르게 사용하는 방법 알아보기

Python 임시 파일을 올바르게 사용하는 방법 알아보기

coldplay.xixi
coldplay.xixi앞으로
2021-03-29 10:57:102486검색

Python 임시 파일을 올바르게 사용하는 방법 알아보기

1. 소개

임시 파일은 일반적으로 메모리에 저장할 수 없는 데이터를 저장하거나 파일에서 읽어야 하는 외부 프로그램에 전달하는 데 사용됩니다. 일반적으로 /tmp 디렉터리에 고유한 파일 이름을 생성하지만 임시 파일을 안전하게 생성하는 것은 그렇게 간단하지 않으며 많은 규칙을 따라야 합니다. 이 작업을 직접 시도하지 말고 대신 라이브러리 함수를 사용하십시오. 또한 임시 파일을 정리할 때도 주의하세요.

임시 파일로 인해 발생하는 가장 큰 문제는 파일 이름을 예측할 수 있다는 것입니다. 이로 인해 악의적인 사용자가 임시 파일 이름을 예측하고 임시 파일을 탈취하기 위한 소프트 링크를 만들 수 있다는 것입니다.

관련 무료 학습 권장사항: python 동영상 튜토리얼

2. 임시 파일 모듈 소개

임시 파일을 생성하는 데 일반적으로 사용되는 모듈은 tempfile입니다.

  • tempfile.mktemp # 안전하지 않아 사용 금지
  • tempfile.mkstemp # tmp 파일을 임의로 생성합니다. 기본적으로 생성되는 파일은 /tmp 디렉터리에 있습니다. 물론 지정할 수도 있습니다(사용 가능). tempfile.TemporaryFile # 메모리에 파일 생성, files 디스크에 저장되지 않고 종료 후 삭제됩니다(사용 가능)
  • tempfile.NamedTemporaryFile(delete=True) delete=True일 때 효과는 같습니다. False일 경우 디스크에 저장됩니다(사용 가능)
3. 예시 소개

다음 방법은 임시 파일을 생성하는 안전한 방법과 안전하지 않은 방법을 소개합니다.

3.1 잘못된 예:

잘못된 1:

import os
import tempfile
 
# This will most certainly put you at risk
tmp = os.path.join(tempfile.gettempdir(), filename)
if not os.path.exists(tmp):
    with open(tmp, "w") file:
        file.write("defaults")

잘못된 2:

import os
import tempfile
 
open(tempfile.mktemp(), "w")

잘못된 3:

filename = "{}/{}.tmp".format(tempfile.gettempdir(), os.getpid())
open(filename, "w")

3.2 올바른 예

정답 1:

fd, path = tempfile.mkstemp()
try:
    with os.fdopen(fd, 'w') as tmp:
        # do stuff with temp file
        tmp.write('stuff')
finally:
    os.remove(path)

올바른 2:

# 句柄关闭,文件即删除
with tempfile.TemporaryFile() as tmp:
    # Do stuff with tmp
    tmp.write('stuff')

올바른 3:

tmp = tempfile.NamedTemporaryFile(delete=True)
try:
    # do stuff with temp
    tmp.write('stuff')
finally:
    tmp.close()  # 文件关闭即删除

관련 무료 학습 권장사항:

python tutorial(동영상)

위 내용은 Python 임시 파일을 올바르게 사용하는 방법 알아보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제