728x90
반응형

 티스토리 

 

현재 디렉토리에 있는 파일 접

Python의 Path 객체를 사용하여 현재 실행 중인 스크립트 파일(__file__)과 동일한 디렉토리에 있는 "abc.csv" 파일의 경로를 생성하는 방법을 보여줍니다. 여기에서 Path는 pathlib 모듈의 일부로, 파일 시스템 경로를 객체 지향적으로 쉽게 다룰 수 있게 해줍니다.

아래 광고 클릭으로 보다 많은 정보를 나눌수 있는 큰힘이 됩니다.~!  

반응형

1. 코드리뷰

from pathlib import Path

# 현재 스크립트와 같은 디렉토리에 있는 'abc.csv' 파일의 경로 생성
fpath = Path(__file__).parent / "abc.csv"

# 생성된 경로 확인
print(fpath)

 

코드 분석 아래 클릭 : 

더보기

Path(__file__): __file__ 전역 변수는 현재 실행 중인 Python 스크립트 파일의 경로를 포함합니다. Path(__file__)를 사용하면 이 경로를 Path 객체로 변환합니다. 이 객체는 파일 시스템 경로를 쉽게 조작할 수 있는 여러 메서드를 제공합니다.

.parent: Path 객체의 parent 속성은 현재 경로의 부모 디렉토리, 즉 현재 파일이 위치한 디렉토리의 경로를 Path 객체로 반환합니다.

/ "abc.csv": Path 객체를 사용할 때, / 연산자를 사용하여 경로를 쉽게 결합할 수 있습니다. 이 경우 "abc.csv" 파일명이 현재 스크립트 파일이 있는 디렉토리의 경로에 추가됩니다.

 

주의할 점
이 코드는 스크립트 파일 내에서 사용될 때 의도대로 작동합니다. Jupyter Notebook이나 대화형 Python 세션(IPython, Python REPL 등)에서 __file__ 변수는 정의되지 않습니다. 대화형 환경에서는 __file__ 대신 실제 경로 문자열이나 다른 방법을 사용해야 합니다.

파일 경로를 생성하고 나면, 이 경로를 사용해 파일을 읽거나 쓸 수 있습니다. 예를 들어, pandas 라이브러리를 사용하여 CSV 파일을 읽어올 때 fpath를 활용할 수 있습니다.

 

아래 광고 클릭으로 보다 많은 정보를 나눌수 있는 큰힘이 됩니다.~!  

728x90

2. 위의 코드를 개선한 예제

여기서는 먼저 파일 경로의 존재 여부를 검증하고, 파일이 존재하지 않을 경우 로깅하는 방법을 추가합니다.

from pathlib import Path
import logging

# 로깅 설정
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')

 

파일 경로 생성 및 검증

try:
    # 현재 스크립트와 같은 디렉토리에 있는 'abc.csv' 파일의 경로 생성
    fpath = Path(__file__).parent / "abc.csv"

    # 파일 경로 검증
    if fpath.exists() and fpath.is_file():
        # 파일 경로가 유효하면 로깅
        logging.info(f"파일 경로 '{fpath}'가 확인되었습니다.")
    else:
        # 파일이 존재하지 않으면 예외 발생
        raise FileNotFoundError(f"파일 '{fpath}'를 찾을 수 없습니다.")
except NameError:
    # __file__이 정의되지 않은 경우(대화형 환경 등)
    logging.error("__file__ 변수가 정의되지 않았습니다. 스크립트 파일 내에서 이 코드를 실행해야 합니다.")
except FileNotFoundError as e:
    # 파일이 존재하지 않는 경우
    logging.error(e)

코드 분석 아래 클릭 :

더보기

이 코드는 다음 단계를 수행합니다:

로깅 설정: 프로그램의 실행 정보를 로깅하기 위해 logging 모듈을 설정합니다. 이 예제에서는 기본 로깅 레벨을 INFO로 설정하고, 로그 메시지의 형식을 지정합니다.

파일 경로 생성: Path 객체를 사용하여 현재 스크립트 파일이 위치한 디렉토리에 "abc.csv" 파일의 경로를 생성합니다.

예외 처리 추가:
NameError: 대화형 환경에서 __file__이 정의되지 않은 경우를 처리합니다.
FileNotFoundError: 지정된 경로의 파일이 존재하지 않을 경우를 처리합니다. 파일이 존재하지 않으면 예외를 발생시키고, 해당 예외를 캐치하여 로깅합니다.
경로 검증: exists()와 is_file() 메서드를 사용하여 파일 경로가 실제로 존재하는 파일을 가리키는지 확인합니다. 유효한 경우 해당 경로에 대한 정보를 로깅합니다.

이렇게 개선된 코드는 파일 경로의 존재를 검증하고, 예상치 못한 상황(예: 파일 누락, 대화형 환경에서의 사용)에 대해 유용한 로깅 정보를 제공합니다. 이는 디버깅 과정을 효과적으로 지원하고, 코드의 견고성을 높여줍니다.

 

마무리

- 이번 포스팅은 __file__ 매소드 활용 방법에 대해 알아봤습니다.

 
 

궁금한 사항은 lution2@gmail.com로 문의사항  주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형
728x90
반응형

 티스토리 

 

특징

아이패드 에어 5세대는 애플에서 출시한 중급 모델 태블릿으로, 전문가 수준의 성능과 다양한 기능을 합리적인 가격에 제공하는 것이 특징입니다. 이 제품은 교육, 창작, 업무 등 다양한 용도로 널리 사용됩니다. 자세한 리뷰를 제공하기 위해, 아이패드 에어 5세대의 주요 특징과 성능, 사용자 경험에 대해 분석해보겠습니다.

 

1. 디자인과 디스플레이

디자인: 아이패드 에어 5세대는 전작들과 유사한 세련된 디자인을 가지고 있습니다. 얇고 가벼워 휴대성이 뛰어나며, 다양한 색상 옵션을 제공하여 사용자의 개성에 맞게 선택할 수 있습니다.


디스플레이10.9인치 Liquid Retina 디스플레이를 탑재하여 선명하고 생생한 색상을 제공합니다. P3 와이드 컬러 감마를 지원하여 더 넓은 색상 범위를 커버하며, True Tone 기술로 주변 광원에 맞게 디스플레이의 백색 균형을 조절하여 눈의 피로를 줄여줍니다.

성능
칩셋: 최신 Apple M1 
칩을 탑재하여 뛰어난 처리 속도와 효율성을 자랑합니다. 이 칩은 높은 성능을 요구하는 작업과 게임에서도 우수한 성능을 발휘합니다.


메모리와 저장공간: 
다양한 메모리 및 저장 공간 옵션을 제공하여 사용자의 필요에 따라 선택할 수 있습니다. 대부분의 사용자에게 적합한 기본 옵션부터 고용량 작업을 위한 더 높은 옵션까지 있습니다.

카메라와 오디오
카메라: 후면 12MP 광각 카메라와 전면 12MP 초광각 카메라를 제공하여 고화질의 사진과 비디오 촬영이 가능합니다. 특히 전면 카메라는 Center Stage 기능을 지원하여 화상 통화 시 사용자를 중앙에 배치하고 움직임을 추적합니다.

오디오: 고품질의 스피커를 탑재하여 명확하고 풍부한 사운드를 제공합니다. 영화 감상, 음악 청취, 화상 회의 등 다양한 활동에 적합합니다.


연결성과 액세서리
연결성: Wi-Fi 6 지원으로 빠른 인터넷 속도를 제공하며, 선택적으로 5G 모델도 있어 이동 중에도 높은 속도로 데이터 접속이 가능합니다.
액세서리 호환성: Apple Pencil (2세대)와 Magic Keyboard, Smart Keyboard Folio 등 다양한 애플 액세서리와 호환되어 작업 효율성과 창의력을 높일 수 있습니다.

 

결론
아이패드 에어 5세대는 강력한 성능, 뛰어난 디스플레이, 다양한 액세서리 호환성을 제공하여 창작, 학습, 업무 등 다양한
목적에 적합한 태블릿입니다. 이 제품은 사용자가 높은 수준의 생산성과 창의력을 발휘할 수 있도록 지원하며, 가볍고 휴대성이 뛰어나 일상 생활에서도 편리하게 사용할 수 있습니다. 이어서 아이패드 에어 5세대의 몇 가지 주요 측면을 추가로 살펴보겠습니다.

배터리 수명
배터리 수명: 아이패드 에어 5세대는 하루 종일 사용할 수 있는 충분한 배터리 수명을 제공합니다. 애플은 일반적인 사용 조건에서 최대 10시간의 배터리 수명을 제공한다고 밝혔습니다. 실제 사용 시간은 사용 패턴에 따라 다를 수 있으나, 대체로 사용자들은 배터리 수명에 만족한다는 평가를 합니다.

운영 체제와 소프트웨어
운영 체제: iPadOS는 아이패드에 최적화된 강력한 기능과 효율적인 멀티태스킹을 지원합니다. 사용자는 여러 앱을 동시에 실행하고, 간편하게 앱 간에 전환하며, 드래그 앤 드롭으로 콘텐츠를 이동할 수 있습니다. iPadOS의 정기적인 업데이트는 새로운 기능과 개선 사항을 지속적으로 제공하여 사용자 경험을 향상시킵니다.

가격 대비 가치
가격: 아이패드 에어 5세대는 고성능을 갖춘 중급 가격대의 태블릿으로, 비슷한 성능의 다른 제품들과 비교했을 때 상당한 가치를 제공합니다. 특히 M1 칩, 고품질 디스플레이, Apple Pencil 및 다양한 키보드 옵션과의 호환성을 고려하면, 창작 작업이나 학습, 업무 등 다양한 목적으로 사용하기에 적합한 투자입니다.

종합적인 평가
아이패드 에어 5세대는 다양한 사용자의 요구를 만족시키는 강력한 기능과 성능을 제공합니다. 학생, 전문가, 일반 사용자 모두에게 적합한 이 제품은 휴대성, 성능, 그리고 가격 대비 가치 측면에서 우수한 평가를 받고 있습니다. 애플의 생태계와 잘 통합되어 추가적인 액세서리와 서비스를 통해 더욱 향상된 사용자 경험을 제공하는 점도 큰 장점 중 하나입니다.

개인적인 요구 사항과 예산에 맞게 아이패드 에어 5세대는 고려할 가치가 있는 옵션입니다. 창의적 작업, 멀티미디어 소비, 일상적인 작업 처리 등 다양한 용도로 활용할 수 있는 유연성을 제공하며, 애플의 지속적인 지원을 통해 장기간 동안 사용할 수 있는 제품입니다.


해당 상품 링크 : https://link.coupang.com/a/bvifco

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

 

모델 확인 하는 2가지 방법:

1. iPad의 후면을 살펴봅니다. (위의 그림참고)

2. 설정을 열고 '일반'을 탭한 다음 '정보'를 탭합니다. 
상단 섹션에서 모델 번호를 찾습니다. 표시된 번호에 슬래시(/)가 있으면 부품 번호인 것입니다(예: MY3K2LL/A). 부품 번호를 탭하여 모델 번호를 확인합니다. 모델 번호는 슬래시 없이 단일 문자와 네 개의 숫자로 구성되어 있습니다(예: A2342).

Mac 또는 PC가 iPad와 호환되는지 확인하려면 해당 모델의 시스템 요구 사항을 확인합니다.

스펙 : 

 

 

 

 

디스플레이 사양 :

 

 

 

 

반응형

그외 자세한 스펙

링크를 참고하세요 : https://support.apple.com/ko-kr/111887

728x90

 

마무리

- 이번 포스팅은 아이패드 에어 5에 대해 알아봤습니다.

 

 

 

궁금한 사항은 lution2@gmail.com로 문의사항  주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형

'My Daily Story > 제품리뷰' 카테고리의 다른 글

당근마켓 유랑마켓 앱 정보 소개  (3) 2024.03.28
생활의달인장작구이통닭  (0) 2024.03.24
lg세탁건조기 일체형  (0) 2024.03.17
728x90
반응형

 티스토리 

 

GitHub 웹 인터페이스를 사용하는 방법

저장소로 이동: GitHub에서 폴더를 추가하고자 하는 저장소로 이동합니다.

Add file 버튼 클릭: 저장소의 메인 페이지에서 'Add file' 버튼을 클릭한 후 'Create new file'을 선택합니다.
폴더 이름 입력: 새 파일을 추가할 위치에 폴더를 생성하려면, 파일명 입력란에 새폴더명/을 입력합니다. 폴더명 다음에 슬래시(/)를 포함하는 것이 중요합니다. 필요하다면 더 깊은 구조를 위해 폴더명/서브폴더명/과 같이 입력할 수도 있습니다.

파일 생성: 폴더를 생성한 후, 그 안에 들어갈 파일의 이름을 지정하고 파일 내용을 입력합니다. 이 과정은 새 폴더와 함께 새 파일을 생성하는 것입니다.
커밋: 페이지 하단으로 스크롤하여 'Commit new file' 버튼을 클릭합니다. 이 버튼을 클릭하면 새 파일과 함께 폴더가 생성됩니다.

반응형

1. Git 명령어를 사용하는 방법

 

로컬 컴퓨터에서 작업하는 경우, Git 명령어를 사용하여 폴더를 생성하고 변경 사항을 GitHub 저장소에 푸시할 수 있습니다.

mkdir 새폴더명

폴더 내에 파일 추가: Git은 빈 폴더를 추적하지 않으므로, 새로운 폴더에 최소 한 개의 파일이 있어야 합니다. 예를 들어, 빈 .gitkeep 파일을 생성할 수 있습니다.

touch 새폴더명/.gitkeep

변경 사항 스테이징: 새로운 폴더와 파일을 스테이징 영역에 추가합니다.

git add .

 

변경 사항 커밋: 변경 사항을 로컬 저장소에 커밋합니다.

git commit -m "새 폴더 및 파일 추가"

GitHub에 푸시: 변경 사항을 GitHub에 푸시하여 새 폴더와 파일을 원격 저장소에 반영합니다.

git push origin main

여기서 main은 대상 브랜치 이름이며, 필요에 따라 다른 브랜치 이름으로 대체할 수 있습니다.
위의 방법들을 통해 GitHub에 새 폴더를 생성하고 관리할 수 있습니다. GitHub 웹 인터페이스는 간단한 변경 사항에 적합하고, Git 명령어를 사용하는 방법은 더 복잡한 프로젝트 작업에 유용합니다.

 

728x90

 

마무리

- 이번 포스팅은 gitthub에서 폴더 생성에 대해 알아봤습니다.

 
 
 

궁금한 사항은 lution2@gmail.com로 문의사항  주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형
728x90
반응형

 티스토리 

 

매직 키워드에 대해 알아봅시다.

 Dunder method , Double UnderScore, Magic keyword, Special methods 라고도 불리기도 하지만, 
공식 문서에서는 special method라고 사용되네요.

1. 예제 모음 코드 리뷰

__init__  :
__init__ 메서드는 파이썬의 매직 메서드(또는 스페셜 메서드) 중 하나로, 클래스의 인스턴스가 생성될 때 자동으로 호출되는 생성자 함수입니다. 이 메서드는 인스턴스가 가지고 있어야 할 초기 상태를 설정하는 데 주로 사용됩니다.

class MyClass:
    def __init__(self, value1, value2):
        self.attribute1 = value1
        self.attribute2 = value2

# MyClass의 인스턴스 생성 시, __init__ 메서드가 자동으로 호출됩니다.
my_instance = MyClass("Hello", 123)
print(my_instance.attribute1)  # 출력: Hello
print(my_instance.attribute2)  # 출력: 123

위의 예제 코드 리뷰는 아래 클릭 :

더보기

__init__ 메서드는 첫 번째 매개변수로 인스턴스 자기 자신을 의미하는 self를 반드시 포함해야 합니다. 그 뒤에는 클래스 인스턴스화 시 필요한 추가 매개변수를 정의할 수 있습니다.

 

__str__: 인스턴스를 문자열로 변환할 때의 동작을 정의합니다. print() 함수나 str()에 객체를 전달했을 때 호출됩니다.

class MyClass:
    def __init__(self, name):
        self.name = name
        
    def __str__(self):
        return f"MyClass 인스턴스의 이름은 {self.name}입니다."

my_instance = MyClass("Test")
print(my_instance)

 

__repr__: 인스턴스의 부모 객체 이름을 확인합니다. 주로 디버깅과 로깅 목적으로 사용됩니다.

class MyClass:
    def __init__(self, name):
        self.name = name
        
    def __repr__(self):
        return f'MyClass("{self.name}")'

my_instance = MyClass("Test")
print(repr(my_instance))

실행 결과 아래 클릭

더보기

부모 객체와 입력한 argument 값이 출려 되는걸 알수 있다.

 

__len__: 컨테이너 타입의 길이를 반환합니다. len() 함수가 호출될 때 실행됩니다.

class MyContainer:
    def __init__(self, data):
        self.data = data
        
    def __len__(self):
        return len(self.data)

container = MyContainer([1, 2, 3, 4])
print(len(container))

실행 결과 값은 아래 클릭 :

 

__getitem__: 컨테이너 타입에서 항목을 가져올 때의 동작을 정의합니다.

class MyContainer:
    def __init__(self, data):
        self.data = data
        
    def __getitem__(self, key):
        return self.data[key]

container = MyContainer(["a", "b", "c"])
print(container[1])  # 출력: b

 

이러한 스페셜 메서드를 사용함으로써 파이썬 클래스의 동작을 매우 유연하게 커스터마이징할 수 있습니다. 클래스를 더 풍부하고 파이썬스럽게 만들고 싶다면, 이러한 메서드들을 적극적으로 활용해보세요.

 

728x90

 

마무리

- 이번 포스팅은 special method, magic method, 매직 매소드..에 대해 알아봤습니다.

 
 

궁금한 사항은 lution2@gmail.com로 문의사항  주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형
728x90
반응형

 티스토리 

 

.7z format을 지원하는 라이브러리

7z 압축 포맷은 고압축률로 잘 알려져 있으며, 파이썬에서 이 포맷을 다루기 위해 여러 서드파티 라이브러리가 개발되었습니다. 주요 7z 파일 처리용 라이브러리와 각각의 특징을 아래에 소개하고, 사용 상황에 따른 추천을 드리겠습니다.

1. 코드리뷰


실무에서 매우 유용하게 쓰이는 코드이며, 관련 앱 개발에 필수로 고려해야 될 사항으로 생각 되네요.

이 코드들을 작성하기 전에, py7zr 라이브러리가 설치되어 있어야 합니다. 설치가 필요한 경우, pip install py7zr 명령어로 설치할 수 있습니다.
# 필요한 코드를 Python Code Interpreter에서 작성 및 최적화합니다.

# 1. 기본적인 압축 파일 생성
import py7zr

def create_archive(archive_name, file_paths):
    with py7zr.SevenZipFile(archive_name, 'w') as archive:
        for file_path in file_paths:
            archive.writeall(file_path, arcname=None) # arcname을 None으로 설정하면 파일 경로에서 마지막 부분을 사용

# 2. 압축 파일 해제
def extract_archive(archive_name, output_path):
    with py7zr.SevenZipFile(archive_name, 'r') as archive:
        archive.extractall(path=output_path)

# 3. 파일 목록 조회
def list_archive_contents(archive_name):
    with py7zr.SevenZipFile(archive_name, 'r') as archive:
        return archive.getnames()

# 4. 암호화된 압축 파일 생성
def create_encrypted_archive(archive_name, file_paths, password):
    with py7zr.SevenZipFile(archive_name, 'w', password=password) as archive:
        for file_path in file_paths:
            archive.writeall(file_path, arcname=None)

# 5. 여러 폴더를 개별 압축 파일로 생성
def create_multiple_archives(folder_paths):
    for folder_path in folder_paths:
        archive_name = f"{folder_path}.7z"
        with py7zr.SevenZipFile(archive_name, 'w') as archive:
            archive.writeall(folder_path, arcname=None)

# 함수 호출은 주석 처리하여 실행 방지
# create_archive('example.7z', ['file1.txt', 'file2.txt'])
# extract_archive('example.7z', 'output_folder')
# contents = list_archive_contents('example.7z')
# create_encrypted_archive('encrypted.7z', ['file1.txt', 'file2.txt'], 'password')
# create_multiple_archives(['folder1', 'folder2'])

 

아래 클릭후 추가 리뷰 내용 확인

더보기

py7zr.SevenZipFile을 사용할 때 with 문을 사용하는 구체적인 이유는 다음과 같습니다:  


- with 문을 사용하는 주된 이유는 리소스 관리입니다. 특히, 파일 작업을 할 때 with 문을 사용하면 파일을 열고 나서    작업이 완료되면 자동으로 파일을 닫아주기 때문에 매우 유용합니다. 이는 파일 핸들 누수를 방지하고 코드를 더        안전하게 만들어줍니다.

자동 리소스 해제: with 문은 context manager 프로토콜을 사용합니다. py7zr.SevenZipFile 클래스는 이 프로토콜을 구현하며, with 블록의 실행이 끝날 때 자동으로 close() 메서드를 호출합니다. 이는 열린 압축 파일이 안전하게 닫히도록 보장하며, 모든 데이터가 올바르게 기록되고 버퍼가 비워지는 것을 확실하게 합니다.

예외 처리: 파일 작업 중에 예외가 발생할 경우, with 문은 예외를 적절히 처리할 수 있는 구조를 제공합니다. 즉, 예외가 발생하더라도 SevenZipFile 객체의 close() 메서드가 호출되어 리소스가 제대로 해제됩니다. 이는 파일이나 다른 시스템 리소스가 잠기는 상황을 방지합니다.

코드의 가독성: with 문을 사용하면 리소스 관리 로직을 명시적으로 보여주지 않아도 됩니다. 코드를 읽는 사람은 with 블록 내에서 열린 리소스가 블록을 벗어나는 순간 안전하게 해제될 것이라는 것을 알 수 있으므로, 코드의 의도를 더 쉽게 파악할 수 있습니다.

결론적으로, with py7zr.SevenZipFile('your_large_file.7z', mode='r') as z: 구문을 사용함으로써, .7z 파일을 열고 작업 후 자동으로 닫으며, 이 과정에서 발생할 수 있는 예외를 관리하고, 코드의 안정성과 가독성을 향상시키는 이점을 얻을 수 있습니다.

 

 

반응형

2. 함수별 코드리뷰

  1. create_archive: 지정된 파일이나 폴더들을 .7z 파일로 압축합니다. 여기서 file_paths는 압축하고자 하는 파일 경로의 리스트입니다.
  2. extract_archive: .7z 파일을 지정된 경로에 해제합니다. archive_name은 해제하고자 하는 .7z 파일의 이름이며, output_path는 파일이 해제될 경로입니다.
  3. list_archive_contents: .7z 압축 파일 내의 파일 목록을 조회합니다. 파일 목록은 파일 이름의 리스트로 반환됩니다.
  4. create_encrypted_archive: 비밀번호를 사용하여 파일이나 폴더들을 암호화된 .7z 파일로 압축합니다. password 파라미터를 통해 암호화에 사용될 비밀번호를 설정할 수 있습니다.
  5. create_multiple_archives: 주어진 폴더들 각각을 별도의 .7z 파일로 압축합니다. 각 폴더 이름에 기반하여 압축 파일 이름이 결정됩니다.
이 코드는 py7zr 라이브러리가 설치된 Python 환경에서 실행할 수 있으며, 필요에 따라 코드를 수정하여 다른 상황에 맞게 사용할 수 있습니다. 코드의 사용 예제나 추가적인 기능이 필요한 경우, 질문해 주세요. ​

 

 

728x90

마무리

- 이번 포스팅은 py7zr 라이브러리 사용하는 방법에 대해 알아봤습니다.

- 7z 압축 포맷은 고압축률로 잘 알려져 있으며, 파이썬에서 이 포맷을 다루기 위해 여러 서드파티 라이브러리가 개발되었습니다. 주요 7z 파일 처리용 라이브러리와 각각의 특징을 아래에 소개하고, 사용 상황에 따른 추천을 드리겠습니다.

1. py7zr
특징: 파이썬에서 7z 압축 포맷을 직접적으로 다룰 수 있는 가장 대표적인 라이브러리입니다. LZMA와 LZMA2 압축 알고리즘을 지원하며, 파일 압축, 압축 해제, 암호화, 복수 볼륨 처리 등 다양한 기능을 제공합니다.
적합한 사용 상황: 고압축률을 요구하는 다양한 프로젝트에서 7z 파일을 생성하거나 압축 해제할 필요가 있을 때.
2. libarchive
특징: libarchive는 다양한 압축 포맷을 지원하는 C 라이브러리이며, 파이썬에서는 python-libarchive를 통해 사용할 수 있습니다. 7z 포맷을 포함하여 tar, rar 등 여러 압축 포맷을 지원합니다.
적합한 사용 상황: 다양한 압축 포맷을 하나의 라이브러리에서 지원받고 싶을 때, 특히 다양한 타입의 압축 파일을 처리해야 하는 경우.
3. PyLZMA
특징: LZMA 압축 알고리즘에 초점을 맞춘 라이브러리로, 7z 파일 내의 LZMA 압축을 사용한 파일들을 처리할 수 있습니다. 비록 7z 포맷의 모든 기능을 지원하지는 않지만, LZMA 알고리즘을 사용하는 파일에 대해서는 좋은 성능을 제공합니다.
적합한 사용 상황: LZMA 압축에 특화된 작업을 할 때, 특히 7z 파일 내의 LZMA 압축된 내용을 다루고 싶을 때.
추천
대부분의 경우, py7zr를 추천합니다. 이 라이브러리는 7z 파일 포맷에 대한 광범위한 지원을 제공하며, 파이썬 생태계 내에서 가장 널리 사용되고 있습니다. 사용하기 쉬운 API와 고압축률, 다양한 기능을 제공하기 때문에 대부분의 7z 관련 작업에 적합합니다.

다만, 프로젝트에서 다양한 압축 포맷을 동시에 다뤄야 한다면, libarchive를 고려할 수 있습니다. 이 라이브러리는 여러 압축 포맷에 대한 지원을 제공하므로, 하나의 라이브러리로 여러 작업을 처리할 수 있는 유연성을 제공합니다.

각 라이브러리의 설치와 사용 방법은 다음과 같습니다:

py7zr 설치: pip install py7zr
python-libarchive 설치: pip install libarchive
PyLZMA 설치: pip install pylzma
프로젝트 요구 사항과 환경에 맞는 라이브러리를 선택하여 고효율적인 압축 작업을 수행할 수 있습니다.
 
 

궁금한 사항은 lution2@gmail.com로 문의사항  주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형
728x90
반응형

 티스토리 

 

개요

PyCharm을 설치하는 과정은 몇 가지 단계로 나눌 수 있으며, 이 과정은 대부분의 운영 체제에서 유사합니다. PyCharm은 JetBrains에서 개발한 Python 개발을 위한 인기 있는 IDE(통합 개발 환경)입니다. Professional Edition(유료)과 Community Edition(무료)의 두 가지 버전이 있습니다. 여기서는 Community Edition을 설치하는 기본 단계를 설명하겠습니다.

1. PyCharm 다운로드


JetBrains의 공식 웹사이트 아래 한국어 버젼 기준 
https://www.jetbrains.com/ko-kr/pycharm/
운영 체제에 맞는 PyCharm 버전을 선택합니다 (Windows, macOS, Linux).
Community Edition을 선택하여 무료 버전을 다운로드합니다.


설치 프로그램 실행:

다운로드한 설치 파일을 실행합니다.
Windows의 경우, 설치 마법사가 나타나면 지시사항을 따릅니다. macOS의 경우, dmg 파일을 열고 PyCharm 아이콘을 Applications 폴더로 드래그합니다. Linux의 경우, tar.gz 파일을 압축 해제하고 제공된 스크립트로 설치를 진행할 수 있습니다.

\

설치후 임포트는 처음이니 따로 건들게 없음.

 

반응형

2. 설정 및 초기 구성

설정 및 초기 구성

설치가 완료되면 PyCharm을 처음 실행할 때 몇 가지 초기 설정을 진행할 수 있습니다. 예를 들어, UI 테마를 선택하고, 필요한 플러그인을 설치하고, 개발 환경을 구성할 수 있습니다.

새 프로젝트 만들기 또는 기존 프로젝트 열기:

PyCharm을 처음 시작하면 새 프로젝트를 만들거나 기존 프로젝트를 열 수 있는 환영 화면이 표시됩니다.
새 프로젝트를 시작하려면 "New Project"를 선택합니다. 여기서 프로젝트의 이름, 위치, 사용할 Python 인터프리터를 설정할 수 있습니다.
환경 구성 및 의존성 관리:

 

Get From VCS 는 작업한 이력들을 자동으로 관리 해주는 기능이며, 처음 초보자라면 일단 무시하시고 나중에 다시 공부 하자!

환경 설정 옵션은 빨간 표시 참고 

테마는 저는 어두운게 좋아서 저렇게 사용합니다~ 원하는데로 골라서 적용해보세요.

 
프로젝트 설정에서 Python 인터프리터를 선택하고 필요한 경우 가상 환경을 구성할 수 있습니다.
필요한 외부 라이브러리나 패키지는 PyCharm의 내장 패키지 관리자를 사용하여 설치할 수 있습니다.

플러그인 종

 

 

python interpreter - add Local ... -> System interprter에서 내가 설치한 python경로에 python.exe를 선택.

 

개발 시작:

이제 PyCharm에서 코드를 작성, 실행 및 디버깅할 준비가 완료되었습니다. PyCharm의 강력한 코드 완성, 버전 관리 통합, 리팩토링 도구 등을 활용하여 효율적으로 개발할 수 있습니다.
PyCharm을 처음 사용하는 경우, 공식 문서와 튜토리얼(https://www.jetbrains.com/pycharm/learn/)을 참고하여 다양한 기능과 작업 흐름에 익숙해지는 것이 좋습니다. PyCharm은 Python 개발자에게 매우 유용한 도구이며, 이를 통해 개발 프로세스를 크게 향상시킬 수 있습니다.

 

파이참 계정 가입 :


PyCharm을 설치하고 계정에 가입하는 것은 여러 이점을 제공합니다. PyCharm은 JetBrains에서 개발한 강력한 Python IDE(통합 개발 환경)로, 효율적인 코드 개발을 돕기 위해 다양한 기능을 제공합니다. 계정에 가입함으로써 얻을 수 있는 주요 이점은 다음과 같습니다:

라이선스 관리: JetBrains 계정을 통해 사용자는 구매한 라이선스를 쉽게 관리할 수 있습니다. 이는 다양한 기기에서 PyCharm을 사용하고자 할 때 특히 유용합니다.

설정 동기화: 계정을 통해 PyCharm의 개인 설정과 환경을 클라우드에 저장하고, 다른 기기에서도 동일한 설정을 적용할 수 있습니다. 이는 여러 컴퓨터를 사용하는 개발자에게 매우 편리한 기능입니다.

제품 업데이트: JetBrains 계정을 통해 PyCharm을 포함한 JetBrains 제품의 최신 업데이트와 정보를 받을 수 있습니다. 새로운 기능이나 버그 수정 사항을 빠르게 확인하고 적용할 수 있습니다.

교육 자료 및 리소스 접근: JetBrains 계정 사용자는 다양한 교육 자료와 리소스에 접근할 수 있습니다. 이는 Python 및 다른 프로그래밍 언어에 대한 학습을 돕는 데 유용할 수 있습니다.

커뮤니티 참여: 계정을 통해 JetBrains의 커뮤니티에 참여하고, 다른 개발자와 지식을 공유하며, 피드백을 주고받을 수 있습니다. 이는 개발 역량을 향상시키는 데 도움이 됩니다.

PyCharm은 개인 사용자를 위한 무료 Community Edition과 더 많은 기능을 제공하는 유료 Professional Edition을 제공합니다. 계정을 가입하면 어느 에디션을 사용하든지 간에 이러한 이점을 누릴 수 있습니다. 또한, 특정 조건(예: 학생, 교육 기관)에 해당되는 경우, JetBrains의 모든 개발 도구를 무료로 사용할 수 있는 기회도 얻을 수 있습니다.

728x90

 

마무리

- 이번 포스팅은 Pycharm 설치에 대해 알아봤습니다.

CostZeroCode

 
 
 

궁금한 사항은 lution2@gmail.com로 문의사항  주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형
728x90
반응형

 티스토리 

 

Python에서 문자열(String)을 뒤집는 방법

파이썬에서 문자열을 뒤집는 방법은 다양합니다. 간결하고 파이썬스러운 접근 방식을 중심으로 몇 가지 방법을 소개하겠습니다. 이러한 방법들은 파이썬의 기본 기능을 활용하며, 추가 라이브러리 없이 문자열 조작을 수행합니다.

1. 코드리뷰 - 슬라이싱 사용

original_string = "Tistory, CostZerocode!"
reversed_string = original_string[::-1]
print(reversed_string)

결과

더보기

!edocoreZtsoC ,yrotsiT

설명: [::-1] 슬라이스는 전체 문자열을 한 번에 역순으로 접근합니다. 여기서 :는 시작부터 끝까지 모든 문자를 선택하라는 의미이고, -1은 역순으로 하나씩 문자를 선택하라는 의미입니다.

 

 

반응형

2. 코드리뷰 - reversed() 함수와 join() 메서드 사용

original_string = "Hello, World!"
reversed_string = ''.join(reversed(original_string))
print(reversed_string)
더보기

설명: reversed() 함수로 문자열의 문자들을 역순으로 나열하고, join() 메서드로 이들을 빈 문자열에 결합하여 새 문자열을 만듭니다.

 

3. 코드리뷰 - 리스트로 변환 후 reverse() 메서드 사용

문자열을 리스트로 변환하고, 리스트의 reverse() 메서드를 사용하여 현장에서(list in-place) 리스트의 순서를 뒤집은 후, 다시 문자열로 변환하는 방법입니다.

original_string = "Hello, World!"
list_string = list(original_string)
list_string.reverse()
reversed_string = ''.join(list_string)
print(reversed_string)
더보기

설명: list() 함수로 문자열을 문자의 리스트로 변환하고, reverse() 메서드로 리스트를 뒤집습니다. 마지막으로, join() 메서드를 사용하여 리스트를 문자열로 다시 결합합니다.

4. 코드리뷰 - 문자열 결합과 반복문 사용

original_string = "Hello, World!"
reversed_string = ""
for char in original_string:
    reversed_string = char + reversed_string
print(reversed_string)
더보기

설명: 새 문자열 reversed_string에 original_string의 각 문자를 앞쪽에 추가합니다. 이 방법은 직관적이지만, 문자열의 길이가 길어질수록 비효율적일 수 있습니다. 문자열은 불변 타입이기 때문에, 매 반복마다 새로운 문자열 객체가 생성됩니다.

 

각 방법은 상황과 선호도에 따라 선택할 수 있습니다. 슬라이싱은 가장 간결하고 효율적인 방법입니다. reversed()와 join()을 사용하는 방법은 명시적이고 읽기 쉬운 코드를 작성하려는 경우에 적합할 수 있습니다. 리스트 변환 방법은 문자열의 불변성으로 인한 비효율을 피하고 싶을 때 유용할 수 있으며, 전통적인 반복문 방법은 문자열 조작의 원리를 더 잘 이해하고자 할 때 좋은 선택입니다.

 

728x90

 

마무리

- 이번 포스팅은 문자열 뒤집기에 대해 알아봤습니다.

CostZeroCode

 
 
 

궁금한 사항은 lution2@gmail.com로 문의사항  주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형
728x90
반응형

 티스토리 

 

예외 처리 - try-except

파이썬의 try-except 구문은 예외 처리를 위해 사용됩니다. 예외 처리는 프로그램 실행 중에 발생할 수 있는 오류(예외)를 처리하여 프로그램이 중단되지 않고 계속 실행될 수 있도록 하는 기능입니다. 이러한 처리는 프로그램의 안정성과 사용자 경험을 향상시키는 데 중요합니다.

1. 코드리뷰

try:
    # 오류가 발생할 가능성이 있는 코드
except 예외유형 as 변수명:
    # 예외 처리 코드
try:
    x = 5
    y = 0
    result = x / y
except ZeroDivisionError:
    print("0으로 나눌 수 없습니다.")

이 코드는 y가 0이므로, ZeroDivisionError 예외가 발생합니다except 블록이 이를 캐치하고 "0으로 나눌 수 없습니다."를 출력합니다.

 

반응형

2. 다양한 예외 처리

try:
    # 코드
except (RuntimeError, TypeError, NameError):
    # 여러 예외 처리

else와 finally
else 블록: 모든 except 블록이 실행되지 않을 때 실행됩니다. 즉, 예외가 발생하지 않았을 때 실행할 코드를 담습니다.
finally 블록: 예외 발생 여부와 관계없이 항상 실행됩니다. 주로 리소스 해제 등의 정리 작업에 사용됩니다.

try:
    print("try 블록 실행")
except Exception as e:
    print(f"예외 발생: {e}")
else:
    print("예외가 발생하지 않았습니다.")
finally:
    print("항상 실행되는 finally 블록")

 

2. 파일처리

파일을 다룰 때 발생할 수 있는 예외를 처리하는 방법입니다. 파일이 존재하지 않을 때 FileNotFoundError 예외가 발생합니다.

try:
    with open('non_existent_file.txt', 'r') as f:
        content = f.read()
except FileNotFoundError:
    print("파일을 찾을 수 없습니다.")

사용자 입력 처리
사용자 입력을 처리하면서 발생할 수 있는 ValueError를 처리하는 예제입니다. 사용자가 숫자가 아닌 다른 값을 입력했을 때 이를 처리합니다.

더보기

try:
    user_input = int(input("숫자를 입력하세요: "))
    print(f"입력한 숫자는 {user_input}입니다.")
except ValueError:
    print("숫자가 아닌 값을 입력하였습니다. 숫자를 입력해주세요.")

리스트 인덱스 처리

리스트에서 발생할 수 있는 IndexError 예외를 처리하는 방법입니다. 사용자가 리스트의 범위를 벗어나는 인덱스에 접근하려 할 때 이를 처리합니다.

더보기

my_list = [1, 2, 3]

try:
    print(my_list[5])
except IndexError:
    print("리스트의 범위를 벗어난 인덱스에 접근하려고 했습니다.")

복수의 예외 처리

하나의 try 블록에서 여러 유형의 예외를 처리하는 방법입니다. 이는 다양한 오류 상황을 하나의 코드 블록에서 처리할 수 있게 해줍니다.

try:
    # 다양한 예외 발생 가능성이 있는 코드
    # 예를 들어, 0으로 나누기 시도 또는 잘못된 타입의 연산 시도
    result = 1 / 0
except (ZeroDivisionError, TypeError) as e:
    print(f"오류 발생: {e}")

728x90

이러한 예제들은 기본적인 사용법부터 복잡한 상황에서의 예외 처리 방법까지 다양한 시나리오를 보여주며, 블로그 독자들이 try-except 구문을 이해하고 자신의 프로젝트에 적용하는 데 도움이 될 것입니다.

마무리

- 이번 포스팅은 try-except  예외 처리 구문에 대해 알아봤습니다.

 
 

궁금한 사항은 lution2@gmail.com로 문의사항  주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형

+ Recent posts