[파이썬] 파일 경로와 파일 암호화

파이썬은 많은 파일 작업을 지원하며, 파일을 읽고 쓰기, 복사 및 이동하는 등의 작업을 쉽게 수행할 수 있습니다. 또한 파일을 암호화하여 보안을 강화할 수도 있습니다. 이번 블로그에서는 파일 경로를 다루는 방법과 파일을 암호화하는 방법에 대해 알아보겠습니다.

파일 경로 다루기

파일 경로는 파일이 위치한 디렉토리의 경로를 나타냅니다. 파이썬에서는 os 모듈을 사용하여 파일 경로를 다룰 수 있습니다.

import os

# 현재 작업 디렉토리 출력
print(os.getcwd())

# 파일의 절대 경로 출력
file_path = "example.txt"
print(os.path.abspath(file_path))

# 경로를 조합하여 파일 경로 생성
directory = "path"
filename = "file.txt"
file_path = os.path.join(directory, filename)
print(file_path)

위의 예제에서는 os.getcwd() 함수를 사용하여 현재 작업 디렉토리를 출력하고, os.path.abspath() 함수를 사용하여 상대 경로인 example.txt 파일의 절대 경로를 출력합니다. 또한 os.path.join() 함수를 사용하여 path 디렉토리와 file.txt 파일을 조합하여 파일 경로를 생성합니다.

파일 암호화

파일 암호화는 파일의 내용을 암호화하여 외부로부터의 무단 액세스를 방지하는 기술입니다. 이를 위해 cryptography 모듈을 사용할 수 있습니다.

from cryptography.fernet import Fernet

# 키 생성
key = Fernet.generate_key()

# 키를 이용하여 암호화 및 복호화 객체 생성
cipher_suite = Fernet(key)

# 파일 암호화
file_path = "example.txt"
with open(file_path, "rb") as file:
    file_data = file.read()
    encrypted_data = cipher_suite.encrypt(file_data)

# 암호화된 데이터를 파일로 저장
encrypted_file = "encrypted_example.txt"
with open(encrypted_file, "wb") as file:
    file.write(encrypted_data)

위의 코드에서는 cryptography.fernet.Fernet 클래스를 사용하여 암호화 및 복호화 객체를 생성합니다. 이를 사용하여 example.txt 파일의 내용을 암호화하고, encrypted_example.txt 파일로 저장합니다.

파일을 복호화하려면 다음과 같이 진행할 수 있습니다.

# 파일 복호화
encrypted_file_path = "encrypted_example.txt"
with open(encrypted_file_path, "rb") as file:
    encrypted_data = file.read()
    decrypted_data = cipher_suite.decrypt(encrypted_data)

# 복호화된 데이터를 파일로 저장
decrypted_file_path = "decrypted_example.txt"
with open(decrypted_file_path, "wb") as file:
    file.write(decrypted_data)

위의 코드에서는 cipher_suite.decrypt() 함수를 사용하여 암호화된 데이터를 복호화합니다. 그리고 decrypted_example.txt 파일로 저장합니다.

파일 경로와 파일 암호화는 파이썬을 사용하여 파일 작업과 보안을 강화하는 데 도움이 됩니다. 파이썬에서는 os 모듈을 통해 파일 경로를 다루고, cryptography 모듈을 통해 파일을 암호화할 수 있습니다. 개인정보와 같은 민감한 정보를 포함하는 파일을 다룰 때는 파일 암호화를 고려해보는 것이 좋습니다.