반응형

python 7

[python] (unittest.main) is not callable 에러 해결 (feat. PYTHONPATH, 환경변수)

오늘 약간 삽질을 한 것이 있는데, unittest.main 이 not callble이라는 unittest 에러가 나왔다. 코드도 다시 확인하고, 오타가 있는지도 보고, __init__도 다시 확인하고.. 하지만 `unittest.main`이 호출 가능하지 않은 오류가 발생한 이유는 PYTHONPATH에 "unittest"라는 이름의 디렉터리가 포함되어 있었기 때문이다!! 참고로, PYTHONPATH: PYTHONPATH는 Python이 모듈과 패키지를 찾을 때 참조하는 디렉터리 목록을 담고 있는 환경 변수이다. 모듈을 가져올 때 Python은 PYTHONPATH에 나열된 디렉터리에서 검색한다. unittest 모듈: Python에는 유닛 테스트를 작성하고 실행하기 위한 내장 모듈인 `unittest`이..

[python, dataclass] 데이터 클래스의 장점

우리는 여러가지 방법을 이용해 데이터를 담을 수 있다. 그냥 list, dict을 통해 데이터를 저장하는 것과 비교해, 데이터 클래스를 통해 데이터를 담아두면 어떤 장점이 있을까? 1. 일단, 타입힌트 지원이 된다 from dataclasses import dataclass @dataclass class UserProfile: username: str age: int is_active: bool def create_user_profile(username: str, age: int, is_active: bool) -> UserProfile: return UserProfile(username, age, is_active) 데이터 클래스는 변수와 함께 타입 어노테이션을 제공하는 것을 허용하는데, 이는 코드를 ..

[python] Dataclasses 모듈은 무엇인가 , 장점은? (feat. **kwargs)

Dataclasses 는 말 그대로 data 를 담는 클래스다. 이 모듈을 사용했을때 어떤 장점이 있는지 알아보자. Dataclasses 모듈 사용하는 법 아래와 같이 모듈을 import하고 @dataclass 데코레이터를 클래스 위에 써준다. from dataclasses import dataclass @dataclass class Friends: name: str age: int goodfriends: bool = True Dataclasses 모듈의 장점 위의 코드에서 보는 것처럼 default 값을 설정해 줄 수 있다. goodfrineds의 디폴트 값을 True로 설정한 것처럼. 간단하게 class 를 작성할 수 있다. 기존에 쓰던 def __init__, self 이런거 없이 간단함 데이터 값..

[python] argparse 사용법, verbose 란 ?

argparse는 무엇이며 언제 사용하는가 Python script를 실행시킬때 필요한 상황에 따라 서로 다른 옵션으로 실행시키고 싶을 때가 있다. 그럴때 ArgumentParser(argparse)를 사용하면 편하게 옵션을 지정해서 실행시킬 수 있다. argparse는 command 창에서 원하는 parameter 를 지정할 수 있다. argparse 사용하는법 import argparse # ArgumentParser object를 만든다 argparser = argparse.ArgumentParser(description=__doc__) # argument를 추가 argparser.add_argument('--testarg', help='This is testarg') argparser.add_ar..

[python, pathlib, glob] 특정 directory (경로) 추출하기

원하는 파일 경로에서 "test"라는 단어로 시작하는 파일의 이름을 추출하고 싶다고 가정해 보자. (나의 경우 파일이름이 "test"를 포함하는 경우 "test"로 시작함) 예) 이 경로에서 [test1, test2, test3]이라는 파일 이름의 리스트를 추출하고 싶음 [WindowsPath('O:ABC/test1'), WindowsPath('O:ABC/test2'), WindowsPath('O:ABC/test3')] 안 좋은 답:... 리스트를 만들어서 for loop을 이용해 test가 있는지 확인하고, 있으면 리스트로 append 함 test_list = [] for fname in os.listdir(test_path): if 'test' in fname: test_list.append(fnam..

[python] plt.savefig 이미지 잘리는 경우, 해결방법 3가지

matplotlib을 사용해서 plot 을 하다보면 plt.show는 전체 이미지를 잘 보여주면서, plt.savefig를 하는경우 이미지가 잘려서 저장되는 문제를 발견할 수 있다. 이를 해결할 수 있는 방법들을 찾아봤다 plt.savefig('xxx',bbox_inches='tight') bbox_inches='tight' 를 사용 plt.tight_layout() 를 적용 아래 페이지를 참고했다. https://stackoverflow.com/questions/37427362/plt-show-shows-full-graph-but-savefig-is-cropping-the-image Plt.show shows full graph but savefig is cropping the image My code..

[python] A value is trying to be set on a copy of a slice from a DataFrame 해결방법

Warning은 error는 아니라 해결은 안 해도 당장의 큰 문제는 없었지만, 계속 보이면... 짜증이 나기 마련이다.. ㅎ 이번에 value assignment 와 관련한 warning을 해결해 보았다. C:\Users\: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy df['test'][i] = '0' 내가 원하는 것은 df의 test라는 c..

반응형