본문 바로가기

포스트464

[Python] 파일과 디렉터리 생성 및 삭제 방법 파이썬으로 스크립트를 작성하면서 파일 시스템에 접근하는 경우가 많다. 파일 시스템에서 파일과 디렉토리를 생성하거나 삭제하는 방법에 대해 정리해보겠다. 파일 생성 파일을 쓰기모드로 열면, 경로에 해당하는 파일이 없을 때 생성된다. f = open('test.txt', 'w') f.close() 주의할 점은 'w' 모드로 파일을 열게 되면 이미 존재하는 파일의 내용을 덮어쓰게 된다는 점이다. 따라서 다음과 같이 만들어주면 된다. if os.path.isfile('test.txt'): f = open('test.txt', 'w') else: f = open('test.txt', 'a') 디렉토리 생성 디렉토리를 생성하기 위해서는 os 모듈의 mkdir() 함수를 사용하면 된다. os.mkdir('myDir').. 2022. 10. 23.
[Python] 파이썬 파일 입출력(읽기/쓰기) 예제 파이썬으로 파일에 있는 데이터를 읽거나 파일로 데이터를 써야하는 경우가 많다. 이번 포스트에서는 파이썬으로 파일을 열고, 데이터를 읽고 쓰는 방법에 대해 정리해보겠다. 파일열기 - open() 우선 파일에서 데이터를 읽거나 파일로 데이터를 쓰려면 파일을 열어야 한다. 파일을 연다는 것은 파일을 다룰 수 있는 준비를 한다는 의미다. 파이썬에서 파일을 열기 위해서는 open() 함수를 써야 한다. open() 함수는 파이썬의 기본 내장 함수다. open() 함수를 호출 할 때, 옵션에 따라 파일이 없으면 생성하고, 읽기 전용 혹은 쓰기용으로 파일을 열 수 있다. open() 함수의 기본형은 다음과 같다. def open(file, mode='r', buffering=None, encoding=None, er.. 2022. 10. 22.
JSON 포맷 데이터에 주석 다는 방법 JSON 포맷에 주석을 달고 싶은 경우가 있다. 예를 들어 ElasticSearch 쿼리를 작성했는데, 특정 JSON 부분이 왜 추가되었는지를 설명해두고 싶은 경우가 있다. 마치 SQL 쿼리에 주석을 다는 것처럼 ElasticSearch 쿼리에도 주석을 달고 싶었다. JSON 주석 하지만 JSON에는 주석이 없다. JSON 표준의 창시자인 더글라스 크록포드에 의하면 JSON에는 주석이 들어가지 않는 것이 올바르다고 한다. I removed comments from JSON because I saw people were using them to hold parsing directives, a practice which would have destroyed interoperability. I know tha.. 2022. 10. 21.
[Bash] warning: shell level (1000) too high, resetting to 1 에러 bash 스크립트를 수행하다가 다음 에러를 만나게 되었다. $ ./run /bin/bash: warning: shell level (1000) too high, resetting to 1 쉘의 레벨이 1000으로 너무 높아서 1로 리셋했다는 의미다. 쉘 스크립트를 실행할 때, 또 다른 쉘을 열어서 진행하는 경우 쉘 레벨(SHLVL) 변수를 하나씩 증가시킨다. 현재 쉘의 레벨 값은 SHLVL 변수를 조회해보면 알 수 있다. $ echo $SHLVL 1 $ bash $ echo $SHLVL 2 $ exit $ echo $SHLVL 1 문제는 어디에선가 쉘 스크립트를 재귀적으로 호출하는 곳이 있을 때 발생한다. 다음 코드를 실행하면 동일한 에러를 재현할 수 있다. $ echo "bash run" > run $.. 2022. 10. 21.
[Python] 문자열 데이터(String)와 bytes 간 변환 방법 파이썬에서는 문자열을 텍스트 형태와 바이트 형태로 표현할 수 있다.가끔 사용하는 모듈이 바이트 형태의 문자열을 입력으로 받는 경우가 있다. 즉, 문자열을 인코딩해서 넣어줘야하는 경우가 있다. 반대로 리턴받은 바이트 형태의 데이터를 문자열로 변환해야하는 경우도 있다. 문자열을 바이트로 변환 - bytes() bytes() 함수를 이용해서 문자열을 바이트로 변환할 수 있다. 예를 들어 input_string = 'Hello, world' print(input_string) bytes_string = bytes(input_string, 'utf-8') print(bytes_string) 문자열 데이터를 bytes() 함수를 이용해서 바이트 형태로 변환할 수 있다. 이 때, 어떤 인코딩 알고리즘을 사용할지 by.. 2022. 10. 21.
[VSCode] Visual Studio Code에서 터미널로 WSL 설정하는 방법 Visual Studio Code에서는 터미널 탭 기능을 제공한다. 윈도우 환경에서는 기본적으로 PowerShell을 사용하게 되는데, 가끔 윈도우에서 Bash 쉘 개발이나 파이썬 개발 같은 것을 할 때, WSL 환경을 터미널 탭에서 열어서 사용하고 싶은 경우가 있다. GUI는 윈도우에서 열고 프로젝트는 WSL을 통해 리눅스에서 진행하는 매우 편리한 구성이다. 다행히 Visual Studio Code는 터미널 탭에서 WSL 터미널을 지원한다. VSCode에서 WSL을 터미널로 지정 우선 WSL2가 설치되어 있어야 한다. WSL 설치는 별도로 검색을 해보거나 다음 글들을 참고하자. [Window] WSL에 CentOS 7 설치 및 삭제 마이크로소프트가 윈도우에 리눅스 친화적인 기능들을 탑재하기 시작하면서 .. 2022. 10. 20.
[IntelliJ] 유용한 인텔리제이 단축키 모음 인텔리제이를 좀 더 편하기 쓰기 위한 단축키 들을 알아보자. 일반 단축키 설명 [Alt] + [0-9] 각 단축키에 해당하는 도구창 열기 [Ctrl] + [S] 모두 저장 [Ctrl] + [Shift] + F12 에디터 영역을 최대크기로 토글 [Ctrl] + [Alt] + S 설정(Settings) 열기 [Ctrl] + [Alt] +[Shift] + S 프로젝트 구조(Project Structure) 열기 [Shift] and [Shift] 검색 열기 디버깅 단축키 설명 [F8] 다음 라인으로 이동 [F7] 현재 메소드로 들어가기 [Shift] + [F8] 현재 메소드를 호출한 곳으로 가기 [Alt] + [F9] 포커스 되어 있는 라인으로 이동 [Alt] + [F8] 현재 라인에서 사용 가능한 모든 코드.. 2022. 10. 19.
[IntelliJ] The file size ... exceeds configured limit ... Code insight features are not available 에러 해결방법 인텔리제이를 이용해 HBase 소스코드를 리뷰했다. 그러다가 다음과 같은 경고창이 에디터 상단에 뜨면서 특정 클래스에 대한 참조가 안되었다. 에디터 상단에 "The file size (4.56 MB) exceeds configured limit (2.56 MB). Code insight features are not available"이라는 에러가 떳다. 그러면서 소스코드의 일부가 제대로 참조되지 않았다. 흠??? HBase에서 사용하는 Protobuf 클래스 중 일부가 참조되지 않았다. 분명 Generated Source Code 쪽에 소스코드도 있는데 없다고 나오는 것이다. 에러에서 알 수 있듯이 Protobuf로 생성된 소스코드 파일의 사이즈가 인텔리제이에서 설정한 한계치인 2.56MB보다 크기 때.. 2022. 10. 19.
[Python] 파이썬 'UnboundLocalError:local variable referenced before assignment' 파이썬 프로그래밍을 하다보면 가끔씩 'UnboundLocalError:local variable referenced before assignment' 에러를 만나게 된다. 이 에러가 어떤 의미인지 알아보고 에러가 발생하지 않으려면 어떻게 해야하는지 알아보자. 우선 에러를 재현해보자. #!/usr/bin/env python3 # -*- coding: utf-8 -*- count = 10 def count_down(): count -= 1 print(count) count_down() 10이라는 초기값을 설정하고 count_down() 함수가 호출될 때마다 1씩 감소하는 카운트 다운 예제다. 이 코드를 실행하면 $ ./test.py Traceback (most recent call last): File "... 2022. 10. 19.