명명된 파이프(FIFO)란 무엇인가?FIFO(First In, First Out)는 일반 파일과 동일한 방식으로 접근할 수 있는 특수한 형태의 파이프입니다. 한 번 생성된 FIFO는 os.unlink() 등으로 명시적으로 삭제하기 전까지 시스템에 계속 존재합니다.FIFO는 주로 클라이언트와 서버 유형의 프로세스 사이에서 만남 지점(rendezvous) 역할을 하며, 프로세스 간 통신(IPC)에 널리 활용됩니다. 일반적인 사용 패턴은 다음과 같습니다.서버: 읽기 모드로 FIFO를 엽니다.클라이언트: 쓰기 모드로 FIFO를 엽니다.여기
Python과 SAP의 만남Python은 전 세계적으로 가장 널리 사용되는 객체 지향 프로그래밍 언어 중 하나로, 문법이 간결하고 배우기 쉬워 초보자부터 전문가까지 폭넓게 활용되고 있습니다. 이러한 Python을 SAP 시스템과 연동하면 기업 데이터를 더욱 유연하게 처리할 수 있습니다.PyRFC 모듈 설치Python에서 SAP에 접속하려면 먼저 PyRFC라는 Python용 SAP RFC 모듈을 설치해야 합니다. PyRFC는 SAP NetWeaver RFC SDK를 기반으로 동작하며, Python 코드에서 SAP 함수(RFC)를 직접
os.mknod() 함수 개요Python에서 파일 시스템 노드를 생성하려면 os.mknod() 함수를 사용할 수 있습니다. 이 함수는 지정한 경로(path)에 새로운 파일 시스템 노드를 만들며, 생성할 수 있는 노드의 종류는 일반 파일(file), 디바이스 특수 파일(device special file), 그리고 명명된 파이프(named pipe)입니다.함수 시그니처와 매개변수함수의 기본 형태는 다음과 같습니다:os.mknod(path, mode=0o600, device=0, *, dir_fd=None)각 매개변수의 역할은 다음과
파이썬에서는 os.openpty() 함수를 사용하여 새로운 의사 터미널(pseudo-terminal) 쌍을 열 수 있습니다. 이 함수는 마스터(master)와 슬레이브(slave) 양 끝에 해당하는 두 개의 파일 디스크립터를 튜플 형태로 반환하며, 각각 마스터와 슬레이브 파일 디스크립터를 나타냅니다. 예제 다음과 같이 사용할 수 있습니다: import os # 마스터는 pty용, 슬레이브는 tty용 m, s = os.openpty() print(m) print(s) # 터미널 이름 확인 s = os.ttyname(s) prin
os.pipe() 메서드는 새로운 파이프(pipe)를 생성하고, 각각 읽기와 쓰기에 사용할 수 있는 파일 디스크립터 쌍 (r, w)을 반환합니다. 파이프는 한쪽 끝에서 데이터를 쓰면 다른 쪽 끝에서 해당 데이터를 읽을 수 있는 단방향 통신 채널로, 주로 부모 프로세스와 자식 프로세스 사이에서 데이터를 주고받을 때 활용됩니다. 예제 아래 예제는 os.fork()로 자식 프로세스를 생성한 뒤, 자식이 파이프에 텍스트를 쓰면 부모가 이를 읽어 화면에 출력하는 과정을 보여줍니다. import os, sys # 읽기(r)와 쓰기(w)에 사
파이썬(Python)에서 디렉토리(폴더)의 이름을 변경하려면 shutil 모듈의 move 함수를 활용할 수 있습니다. shutil.move(src, dst)는 src 경로에 있는 디렉토리를 dst 경로로 이동시키는 함수인데, 경로를 지정하지 않고 새 이름만 입력하면 사실상 이름을 변경하는 것과 같은 효과를 얻을 수 있습니다.shutil.move() 사용 예제>>> import shutil>>> shutil.move(my_folder, new_name)위 코드는 my_folder 디렉토리의 이름을 ne
파일이 수백 개씩 있을 때 하나하나 이름을 바꾸는 것은 비효율적입니다. Python의 os.walk와 os.rename을 활용하면 폴더와 그 하위 폴더까지 탐색하면서 조건에 맞는 파일명을 자동으로 일괄 변경할 수 있습니다.핵심 원리os.walk는 지정한 폴더를 시작으로 모든 하위 디렉터리를 재귀적으로 순회하며 각 경로의 폴더명, 하위 폴더 목록, 파일 목록을 반환합니다. 이 정보를 바탕으로 os.rename으로 파일 이름을 변경하면 됩니다.예제 코드import os def replace(folder_path, old, new):
tempfile 모듈로 안전하게 임시 파일 생성하기파이썬에서 고유한 임시 파일을 가장 안전한 방식으로 만들려면 표준 라이브러리의 tempfile 모듈을 사용하는 것이 가장 좋습니다. 특히 mkstemp() 함수는 다음과 같은 보안상 이점을 제공합니다.파일 생성 과정에서 경쟁 상태(race condition)가 발생하지 않습니다.생성된 파일은 파일을 만든 사용자 ID만 읽고 쓸 수 있어 권한이 안전하게 제한됩니다.mkstemp() 기본 사용법import tempfile _, temp_file_path = tempfile.mkstemp
파이썬에서 고유한 임시 디렉토리 만들기파이썬에서 고유한 임시 디렉토리를 생성해야 할 때는 표준 라이브러리의 tempfile 모듈을 사용하는 것이 가장 좋습니다. tempfile.mkdtemp() 함수는 가능한 한 가장 안전한 방식으로 임시 디렉토리를 생성하며, 다음과 같은 장점을 제공합니다.디렉토리 생성 과정에 경합 조건(race condition)이 발생하지 않습니다.생성된 디렉토리는 생성한 사용자 ID만 읽기, 쓰기, 검색할 수 있어 보안성이 뛰어납니다.mkdtemp() 사용 예제새로운 임시 디렉토리를 만들려면 다음과 같이 코드
Python에서 파일 삭제하기Python에서는 os 모듈의 함수를 사용하여 단일 파일이나 빈 폴더를 간단하게 삭제할 수 있습니다. 별도의 외부 라이브러리 설치 없이 표준 라이브러리만으로 처리할 수 있어 매우 편리합니다.os.remove()로 파일 삭제하기예를 들어 a.txt라는 파일을 삭제하고 싶다면 다음과 같이 작성하면 됩니다.>>> import os >>> os.remove(a.txt)os.remove() 함수의 인자에는 반드시 절대 경로 또는 상대 경로를 지정해야 합니다. 경로가 올바르지 않으면
파이썬으로 숫자를 문자열(영어 단어)로 바꾸기파이썬에서 문자열에 포함된 숫자를 zero, one, two 같은 영어 단어로 변환하려면 딕셔너리(dictionary) 객체를 활용하는 것이 가장 간단합니다. 각 숫자를 키(key)로, 해당 숫자의 영어 단어 표현을 값(value)으로 저장하는 딕셔너리를 먼저 정의합니다.dct = {0: zero, 1: one, 2: two, 3: three, 4: four, 5: five, 6: six, 7: seven, 8: eight, 9: nine}1. 결과를 담을 새 문자열 초기화변
파일의 생성 시간(creation time)을 확인하려면 운영체제에 따라 사용하는 방법이 다릅니다.Windows에서는 os.path.getctime(file_path) 함수를 사용하면 파일이 생성된 시간을 얻을 수 있습니다. 하지만 UNIX 계열 시스템(Linux, macOS 등)에서는 이 함수가 파일 생성 시간이 아닌, 파일의 속성이나 내용이 마지막으로 변경된 시간을 반환하기 때문에 주의해야 합니다.UNIX 기반 시스템에서 실제 생성 시간을 얻으려면 os.stat()이 반환하는 stat 객체의 st_birthtime 속성을 사용해
파일의 생성 시간을 확인하려면 Windows에서는 os.path.getctime(file_path) 함수를 사용하면 됩니다. 다만 UNIX 계열 시스템(macOS, Linux 등)에서는 이 함수가 파일의 속성이나 내용이 마지막으로 변경된 시간을 반환하기 때문에 같은 용도로 사용할 수 없습니다. UNIX 기반 시스템에서 생성 시간을 얻으려면 os.stat()이 반환하는 객체의 st_birthtime 속성을 사용해야 합니다.Windows에서 생성 시간 확인하기Windows 환경에서는 다음과 같이 간단하게 확인할 수 있습니다.>&g
바이너리(binary) 파일이란 사람이 읽을 수 있는 문자가 아닌 형식으로 구성된 파일을 의미합니다. 대표적인 예로 JPEG나 GIF 같은 이미지 파일, MP3 같은 오디오 파일, 그리고 Word나 PDF처럼 이진 형식으로 저장되는 문서 파일 등이 있습니다.Python에서 바이너리 모드로 파일 열기Python에서는 open() 함수로 파일을 열 때 기본적으로 텍스트 모드(text mode)가 적용됩니다. 따라서 파일을 바이너리 모드로 다루려면 모드를 지정하는 문자열에 b를 추가해야 합니다. 예를 들어 쓰기 모드라면 wb, 읽기 모드
코드에서 어떤 패키지나 모듈을 사용하려면, 반드시 먼저 해당 요소를 코드에 가져와야(import) 합니다. Python에서는 아직 정의되지 않은 것을 사용할 수 없기 때문입니다. 물론 기본 자료형(int, float 등)처럼 내장된 요소는 언제든지 바로 사용할 수 있지만, 대부분의 작업에는 추가적인 모듈이 필요합니다.예를 들어, 코사인 값을 계산하고 싶다고 가정해 보겠습니다. math 모듈을 가져오지 않은 상태에서 math.cos(0)을 실행하면 다음과 같이 NameError가 발생합니다.예제모듈을 사용하려면 코드에서 해당 모듈을
.pyc 파일은 Python 인터프리터가 .py 파일을 임포트할 때 자동으로 생성되는 파일입니다. 이 파일에는 임포트된 모듈 또는 프로그램의 컴파일된 바이트코드(bytecode)가 담겨 있습니다. .pyc 파일의 역할 소스 코드를 바이트코드로 변환하는 작업은 원래 한 번만 수행하면 됩니다. 따라서 이후에 같은 모듈을 다시 임포트할 때, .pyc 파일이 대응하는 .py 파일보다 최신 상태라면 변환 과정을 건너뛰고 바이트코드를 바로 불러올 수 있습니다. 그 결과 프로그램의 시작 속도가 다소 빨라집니다. 주의할 점 다만 .pyc 파일이
파이썬으로 프로그램을 작성하다 보면 .py, .pyc, .pyo, .pyd 등 다양한 확장자를 가진 파일을 마주하게 됩니다. 각 확장자는 파이썬 프로그램의 실행 과정에서 저마다 고유한 역할을 담당하고 있습니다. 이번 글에서는 이 네 가지 확장자가 각각 어떤 의미를 지니는지 자세히 살펴보겠습니다. .py — 파이썬 소스 코드 파일 .py는 개발자가 직접 작성한 파이썬 원본 소스 코드를 담고 있는 파일입니다. 우리가 흔히 작성하는 파이썬 스크립트가 바로 이 확장자를 사용하며, 사람이 읽고 편집할 수 있는 텍스트 형태로 되어 있습니다.
Python 파일의 표준적인 헤더 구조Python 개발자들은 일반적으로 다음과 같은 순서로 모듈 또는 Python 파일을 구성합니다. 이러한 규칙을 따르면 코드의 가독성이 높아지고, 다른 개발자와의 협업 시에도 일관성을 유지할 수 있습니다.1. 셔뱅(Shebang) 라인파일의 첫 번째 줄에는 #!/usr/bin/env python을 작성합니다. 이 셔뱅 라인이 있으면 인터프리터를 명시적으로 호출하지 않고도 해당 파일을 스크립트로 직접 실행할 수 있습니다. /usr/bin/env를 사용하면 시스템 환경에 설치된 Python 경로를 자
Python에서 특정 디렉토리에 있는 모든 파일과 폴더의 목록을 확인하고 싶다면 os.listdir() 함수를 사용하면 됩니다. 이 함수는 지정한 경로(my_path)에 존재하는 파일과 디렉토리를 모두 리스트 형태로 반환합니다.기본 사용 예제os.listdir()은 다음과 같이 사용할 수 있습니다.>>> import os>>> os.listdir(.)[DLLs, Doc, etc, include, Lib, libs, LICENSE.txt, NEWS.txt, python.exe, pythonw.exe,
Python에서 특정 디렉토리 내의 .txt 확장자를 가진 파일들을 모두 찾고 싶다면 os.listdir 메서드를 활용할 수 있습니다. 이 메서드는 지정한 디렉토리 안의 모든 파일과 폴더 목록을 반환하며, 여기에 리스트 컴프리헨션을 사용해 파일만 골라내고 확장자를 확인하는 방식으로 원하는 결과를 얻을 수 있습니다.os.listdir과 endswith 활용하기다음 예제는 현재 디렉토리(.)에서 파일만 필터링한 뒤, 확장자가 .txt로 끝나는 파일들만 추출하는 코드입니다.>>> import os>>> f