디렉토리
디렉토리는 각 파일의 형식이 다를 수 있는 파일 모음입니다. 파이썬은 프로그래머가 디렉토리 작업을 하는 데 도움이 되는 다양한 방법을 OS 모듈에 가지고 있습니다.
디렉토리 작업
현재 작업 디렉토리 확인하기
import os
cwd = os.getcwd()
print("Current Workking Directory:", cwd)
Output:
Current Workking Directory: /content
다음 스크립트는 현재 작업 디렉토리 아래 서브 디렉토리 생성하기
import os
os.mkdir("mysub")
print("Current Workking Directory:", cwd)
다음 스크립트는 서브 디렉토리 아래 서브 디렉토리 생성하기
import os
os.mkdir("mysub/mysub2")
다음 스크립트는 디렉토리를 제거하는 예제입니다.
import os
os.rmdir("mysub/mysub2")
다음 스크립트는 디렉토리 이름을 변경하는 예제입니다.
import os
os.rename("mysub", "newdir")
다음 스크립트는 디렉토리 내용을 확인하는 예제입니다.
import os
print(os.listdir("."))
디렉토리와 서브디렉토리 내용 확인하기
walk() 함수는 디렉토리 및 하위 디렉토리의 내용을 식별하는 데 사용됩니다.
os.walk(path, topdown=True, onerror=None, followlinks=False)
iterator 객체를 반환하고 for 루프를 사용하여 그 내용을 볼 수 있습니다.
경로: 디렉토리 경로
topdown = True이면 위에서 아래로 순회됩니다.
onerror = None이면 실행해야 하는 함수를 반환합니다.
Followlinks = True이면 표시된 대로 디렉토리를 방문합니다.
심볼릭 링크에 의해.
다음 스크립트는 현재 작업 디렉토리 및 관련 하위 디렉토리의 내용을 출력하는 예제입니다.
import os
for dirpath, dirnames, filenames in os.walk('.'):
print("Current Directory Path:", dirpath)
print("Directories:", dirnames)
print("Files:", filenames)
print()
파일에 관한 정보를 얻는 방법
OS 모듈 stat() 함수는 크기, 마지막 액세스 시간, 마지막 수정 시간 등과 같은 파일의 통계를 식별하는 데 사용됩니다.
stats = os.stat(“abc.txt”)
다음 표는 파일의 다른 매개변수와 그 매개변수에서 얻은 정보를 보여줍니다.
Parameters | Information Obtained |
st_mode | Protection Bits. |
st_dev | Device. |
st_ino | Node Number. |
st_uid | User Id of Owner |
st_nlink | Number of Hard Links. |
st_size | Size of file in bytes. |
st_gid | Group-Id of Owner. |
st_atime | Time of Most Recent Access. |
st_ctime | Time of Most Recent Meta Data Change. |
st_mtime | Time of Most Recent Modification. |
소켓을 통해 데이터 보내기 및 받기
같은 컴퓨터나 다른 컴퓨터에 있는 응용 프로그램에서 데이터를 보내고 받기 위해 소켓을 사용할 수 있습니다. 소켓은 IP 주소와 포트 번호의 조합으로 나타내는 경로를 의미합니다.
Python 스크립트를 사용하여 소켓을 통해 데이터를 보내거나 받을 수 있습니다.
서버 응용 프로그램은 특정 IP에 대한 클라이언트 요청을 수신하고 클라이언트가 서버에 연결할 때마다 데이터를 클라이언트에 보냅니다.
소켓을 통한 데이터 전송
서버를 생성하려면 소켓 모듈에서 Socket 클래스의 객체를 생성해야 합니다.
다음으로 소켓을 포트에 바인딩해야 합니다. 소켓을 포트에 바인딩한다는 것은 소켓이 해당 포트를 통해 데이터를 보내고 받는다는 것을 의미합니다.
소켓을 포트에 바인딩하려면 bind() 메서드를 호출해야 합니다. 첫 번째 매개변수는 요청을 수신하려는 시스템의 IP 주소입니다. 빈 문자열을 첫 번째 매개변수로 전달하면 시스템은 다른 IP의 요청을 처리합니다. 두 번째 매개변수는 소켓을 바인딩하려는 포트입니다.
다음으로 Socket 클래스 객체를 사용하여 listen() 메서드를 호출해야 합니다. listen 메서드는 대기열에 대한 연결 수를 지정합니다.
마지막으로 루프 내부의 소켓 객체에 대해 accept() 메서드를 호출해야 합니다. 루프 내에서 accept() 메서드를 호출하면 소켓이 일정한 수신 모드로 전환됩니다. 클라이언트가 서버에 연결을 시도할 때마다 accept() 메서드는 클라이언트 연결 및 주소를 반환합니다.
클라이언트에 데이터를 다시 보내려면 연결에서 send() 메서드를 호출하고 메서드 매개 변수로 클라이언트에 보내고 싶은 데이터를 전달해야 합니다.
다음 스크립트에서는 한 번에 5개의 연결이 대기열에 들어가고 그 이후에는 소켓에서 새 연결을 수락하지 않습니다. 스크립트를 실행하면 서버는 포트 5555에서 수신 대기를 시작합니다.
import socket
new_socket = socket.socket()
print("Socket successfully created")
port = 5555
new_socket.bind(('', port))
print("Socket connected to port %s"%(port))
new_socket.listen(5)
print("Server is listening to request")
while True:
conn, clt_address = new_socket.accept()
print('Received connection request from', clt_address)
conn.send(b'Welcome to the server')
conn.close()
소켓을 통해 데이터 수신
소켓을 통해 데이터를 수신하려면 다시 Socket 클래스 개체를 만들어야 합니다.
다음으로 서버의 IP 주소와 포트 번호로 connect() 메소드를 호출해야 합니다.
마지막으로 서버에서 데이터를 수신하려면 수신할 데이터의 바이트 수와 함께 recv() 메서드를 호출해야 합니다.
import socket
client_socket = socket.socket()
port = 5555
client_socket.connect(('127.0.0.1', port))
print(client_socket.recv(2048))
client_socket.close()
'프로그래밍 언어 > 파이썬 (Python)' 카테고리의 다른 글
[파이썬 학습] 디버거 모듈과 컬렉션 모듈 (0) | 2022.02.20 |
---|---|
[파이썬 학습] 정규 표현식 (0) | 2022.02.19 |
[파이썬 학습] CSV, PDF 파일 읽기와 쓰기 (0) | 2022.02.17 |
[파이썬 학습] 파일 읽기와 쓰기 (0) | 2022.02.16 |
[파이썬 학습] 예외처리 (0) | 2022.02.15 |