본문 바로가기

Python283

Python 이진 파일을 읽고 각 바이트를 반복하는 것. [중복], Reading binary file and looping over each byte [duplicate] 질문 파이썬에서 이진 파일을 읽고 해당 파일의 각 바이트를 반복하는 방법은 무엇인가요? 답변 파이썬 >= 3.8 왈러스 연산자 (:=) 덕분에 솔루션이 꽤 짧습니다. 파일에서 bytes 객체를 읽고 변수 byte에 할당합니다. with open("myfile", "rb") as f: while (byte := f.read(1)): # 바이트로 작업 수행. 파이썬 >= 3 이전 파이썬 3 버전에서는 약간 더 자세한 방법을 사용해야 합니다: with open("myfile", "rb") as f: byte = f.read(1) while byte != b"": # 바이트로 작업 수행. byte = f.read(1) 혹은 benhoyt이 말한 대로, 같지 않음을 건너뛰고 b""이 거짓으로 평가되는 사실을 이용.. 2023. 11. 24.
Python 파이썬에서 추상 클래스를 만들 수 있을까요?, Is it possible to make abstract classes in Python? 질문 파이썬에서 클래스나 메소드를 추상화하는 방법은 무엇인가요? 다음과 같이 __new__()를 재정의해 보았습니다: class F: def __new__(cls): raise Exception("추상 클래스 %s의 인스턴스를 생성할 수 없습니다" %cls) 하지만, 이제 F를 상속받는 G 클래스를 다음과 같이 만들면: class G(F): pass G를 인스턴스화할 수 없습니다. 왜냐하면 G는 슈퍼 클래스의 __new__ 메소드를 호출하기 때문입니다. 추상 클래스를 정의하는 더 좋은 방법이 있을까요? 답변 추상 클래스를 만들기 위해 abc 모듈을 사용하세요. 메서드를 추상으로 선언하기 위해 abstractmethod 데코레이터를 사용하고, 파이썬 버전에 따라 세 가지 방법 중 하나를 사용하여 클래스를 .. 2023. 11. 16.
Python 파이썬에서 문자열에서 영숫자 문자만 남기고 모두 제거하기, Stripping everything but alphanumeric chars from a string in Python 질문 파이썬을 사용하여 문자열에서 모든 영숫자가 아닌 문자를 제거하는 가장 좋은 방법은 무엇인가요? 이 질문의 PHP 버전에서 제시된 해결책들은 약간의 조정을 거치면 작동할 것 같지만, '파이썬 다운' 느낌이 들지 않습니다. 기록을 위해, 저는 마침표와 쉼표(및 기타 구두점)뿐만 아니라 따옴표, 괄호 등도 제거하려고 합니다. 답변 저는 그냥 호기심으로 몇 가지 함수를 시간 측정해 보았습니다. 이 테스트에서는 내장된 string 모듈의 string.printable에서 비알파벳 및 숫자가 아닌 문자를 제거합니다. '[\W_]+'와 pattern.sub('', str)의 사용이 가장 빠르다는 것을 알게 되었습니다. $ python -m timeit -s \ "import string" \ "''.join(c.. 2023. 11. 16.
Python TypeError: Unicode-objects must be encoded before hashing를 어떻게 수정할 수 있나요?, How to correct TypeError: Unicode-objects must be encoded before hashing? 질문 나는 이 오류를 가지고 있습니다: Traceback (most recent call last): File "python_md5_cracker.py", line 27, in m.update(line) TypeError: Unicode-objects must be encoded before hashing 나는 Python 3.2.2에서 이 코드를 실행하려고 할 때: import hashlib, sys m = hashlib.md5() hash = "" hash_file = input("해시가 있는 파일 이름은 무엇입니까? ") wordlist = input("워드리스트는 무엇입니까? (파일 이름을 입력하세요) ") try: hashdocument = open(hash_file, "r") except IO.. 2023. 11. 16.