본문 바로가기

전체 글980

Python 파일 출력과 함께 디렉토리 자동 생성하기 [중복], Automatically creating directories with file output [duplicate] 질문 파일을 만들고 싶다고 가정해 봅시다: filename = "/foo/bar/baz.txt" with open(filename, "w") as f: f.write("FOOBAR") 이렇게 하면 IOError가 발생합니다. 왜냐하면 /foo/bar가 존재하지 않기 때문입니다. 이러한 디렉토리를 자동으로 생성하는 가장 파이썬다운 방법은 무엇인가요? 모든 디렉토리에 대해 명시적으로 os.path.exists와 os.mkdir를 호출해야 할 필요가 있을까요? (예: /foo, 그리고 /foo/bar) 답변 Python 3.2+에서는 OP가 요청한 API를 사용하여 다음을 우아하게 할 수 있습니다: import os filename = "/foo/bar/baz.txt" os.makedirs(os.path.di.. 2023. 10. 13.
Python 두 개의 마커 사이의 부분 문자열을 추출하는 방법은 무엇인가요?, How to extract the substring between two markers? 질문 어떤 문자열 'gfgfdAAA1234ZZZuijjk'이 있다고 가정하고, '1234' 부분만 추출하고 싶습니다. AAA 바로 전에 있는 몇 개의 문자만 알고 있으며, ZZZ 이후에는 1234와 같이 관심 있는 부분입니다. sed를 사용하면 다음과 같이 문자열에 대해 작업할 수 있습니다: echo "$STRING" | sed -e "s|.*AAA\(.*\)ZZZ.*|\1|" 이렇게 하면 결과로 1234를 얻을 수 있습니다. Python에서는 어떻게 같은 작업을 수행할 수 있을까요? 답변 정규 표현식을 사용하여 - 문서를 참조하세요 import re text = 'gfgfdAAA1234ZZZuijjk' m = re.search('AAA(.+?)ZZZ', text) if m: found = m.group.. 2023. 10. 13.
Python 파이썬에서 ++와 -- 연산자가 없는 이유는 무엇인가요?, Why are there no ++ and --​ operators in Python? 질문 파이썬에는 왜 ++ 및 -- 연산자가 없는 것인가요? 답변 그것은 이해가 안 되는 것이 아니라 "x++"를 "x += 1로 정의하고, x의 이전 바인딩으로 평가한다"는 것이 완전히 이해됩니다. 원래 이유를 알고 싶다면 옛날 파이썬 메일링 리스트를 살펴보거나 그곳에 있던 사람(예: Guido)에게 물어봐야하지만, 사실 이후에는 충분히 정당화할 수 있습니다: 간단한 증가 및 감소는 다른 언어보다 그렇게 많이 필요하지 않습니다. 파이썬에서는 for(int i = 0; i < 10; ++i)과 같은 것을 많이 사용하지 않고, 대신 for i in range(0, 10)과 같은 것을 사용합니다. 거의 필요하지 않기 때문에 이를 위해 특별한 구문을 제공하는 것에 대한 이유가 훨씬 적습니다. 증가가 필요한 경우.. 2023. 10. 13.
로컬 파일 시스템 폴더에서 가상 환경에 pip을 사용하여 Python 패키지를 설치합니다., Installing Python packages from local file system folder to virtualenv with pip 질문 파일 시스템에서 pip를 사용하여 패키지를 설치할 수 있을까요? 제 패키지에 대해 python setup.py sdist를 실행하여 적절한 tar.gz 파일을 생성했습니다. 이 파일은 시스템의 /srv/pkg/mypackage/mypackage-0.1.0.tar.gz에 저장되어 있습니다. 이제 가상 환경에서 pypi에서 오는 패키지 또는 특정 로컬 위치인 /srv/pkg에서 패키지를 설치하고 싶습니다. 이게 가능한가요? 참고 pip install /srv/pkg/mypackage/mypackage-0.1.0.tar.gz를 지정할 수 있다는 것을 알고 있습니다. 그렇게 하면 작동하지만 pip install mypackage를 입력했을 때 pip가 검색할 수 있는 다른 위치로 /srv/pkg를 사용하고.. 2023. 10. 13.
Python 스코프 규칙에 대한 간단한 설명, Short description of the scoping rules 질문 파이썬의 스코핑 규칙은 정확히 무엇인가요? 다음과 같은 코드가 있다면: code1 class Foo: code2 def spam..... code3 for code4..: code5 x() x는 어디에서 찾을 수 있을까요? 가능한 선택지는 아래 목록에 포함됩니다: 감싸고 있는 소스 파일에서 클래스 네임스페이스에서 함수 정의에서 for 루프의 인덱스 변수에서 for 루프 안에서 또한 함수 spam이 다른 곳으로 전달될 때 실행 중인 문맥도 있습니다. 그리고 아마도 람다 함수는 조금 다르게 전달될 수도 있습니다. 중급 파이썬 프로그래머에게 혼동스러운 세상에는 반드시 간단한 참고 자료나 알고리즘이 있을 것입니다. 답변 실제로, 파이썬 범위 결정에 대한 간결한 규칙은 Learning Python, 3rd... 2023. 10. 13.
Python 제너레이터 표현식 대 리스트 내장, Generator expressions vs. list comprehensions 질문 파이썬에서 제너레이터 표현식과 리스트 컴프리헨션을 언제 사용해야 할까요? # 제너레이터 표현식 (x*2 for x in range(256)) # 리스트 컴프리헨션 [x*2 for x in range(256)] 답변 John의 답변은 좋습니다 (리스트 컴프리헨션은 여러 번 반복해야 할 때 더 좋습니다). 그러나 리스트 메소드를 사용하려면 리스트를 사용해야 한다는 점도 유의해야 합니다. 예를 들어, 다음 코드는 작동하지 않습니다: def gen(): return (something for something in get_some_stuff()) print gen()[:2] # 제너레이터는 인덱싱이나 슬라이싱을 지원하지 않습니다 print [5,6] + gen() # 제너레이터는 리스트에 추가할 수 없습니.. 2023. 10. 13.
Python 문자열에서 부분 문자열의 마지막 발생 위치를 찾습니다., Find index of last occurrence of a substring in a string 질문 주어진 입력 문자열 str에서 특정한 부분 문자열의 마지막 발생 위치 (또는 인덱스)를 찾고 싶습니다. 예를 들어, 입력 문자열이 str = 'hello'이고 부분 문자열이 target = 'l'인 경우, 결과는 3이어야 합니다. 어떻게 이를 할 수 있을까요? 답변 Use .rfind(): >>> s = 'hello' >>> s.rfind('l') 3 Also don't use str as variable name or you'll shadow the built-in str(). 2023. 10. 12.
Python 문자열이 패턴과 일치하는지 확인하세요., Check if string matches pattern 질문 문자열이 다음 패턴과 일치하는지 확인하는 방법은 무엇인가요? 대문자, 숫자, 대문자, 숫자... 예시: 다음은 일치합니다: A1B2 B10L1 C1N200J1 다음은 일치하지 않습니다 ('^'는 문제를 가리킵니다): a1B2 ^ A10B ^ AB400 ^ 답변 import re pattern = re.compile("^([A-Z][0-9]+)+$") pattern.match(string) 2023. 10. 12.