터미널에서 파이썬 함수를 호출할 수 있습니까?
나는 파이썬 프로그램을 실행하고 터미널에 함수를 입력하여 함수를 실행할 수 있기를 원한다. 예:
파이썬 스크립트에서 함수를 정의합니다
def hi():
print('hello')
프로그램이 실행되는 동안 터미널에 "hi()" 또는 "hi"를 입력하면 "hello"가 반환됩니다.
나의 최종 목표는 언제든지 호출할 수 있는 다양한 기능을 갖는 것이다. 나는 내가 많은 if/elif 문으로 이것을 하드 코딩할 수 있다는 것을 이해하지만 그것은 지저분하고 실용적이지 않아 보이는 해결책이다.
사용 중인 예로는 다음에 오는 접두사와 명령을 찾고 호출된 함수를 실행할 수 있는 디스코드 봇이 있다
사용자가 보기에 깔끔하게 할 수 있는 방법은 없나요?
#포맷이 안 좋아서 미안해, 나는 스택 오버플로가 꽤 생소해
이것은 복잡해질 수 있다. 기본 솔루션은 글로벌 네임스페이스에서 함수 개체를 가져오는 것입니다.
def hi():
print("Hello")
def bye():
print("Sorry, I'm staying")
while True:
try:
cmd = input("what up? ")
globals()[cmd.strip()]()
except KeyError:
print("Invalid")
글로벌 네임스페이스 대신 사용자의 사전을 사용할 수 있습니다. 사전을 초기화할 필요가 없습니다. 그것은 도움 시스템과 같은 것을 구현하는 데 도움이 될 수 있다. 당신은 당신의 모든 명령을 그들의 모듈에 넣을 수도 있고, 당신 자신의 명령 대신 네임스페이스를 사용할 수도 있다.
그리고 매개변수를 제공하는 문제가 있다. 만약 당신이 그런 것을 하고 싶다면, 쉼표나 비슷한 것으로 문자열을 나눌 수 있습니다.
더 복잡하지만 표현력이 풍부한 솔루션을 위해 "Python의 도메인별 언어"를 탐색할 수도 있습니다.
다음 코드를 사용할 수 있을 것 같습니다:
import sys
def hi():
print('hello')
while True:
c = sys.stdin.readlines(1)[0].split('\n')[0]
eval(c)()
eval은 문자열을 함수로 만들 수 있고 sys.stdin은 cmd 입력을 읽는 함수를 가지고 있다.
질문 1
나는 파이썬 프로그램을 실행하고 터미널에 함수를 입력하여 함수를 실행할 수 있기를 원한다. 예:
본질적으로 당신은 묻고 있다: . 그러기 위해서는 먼저 Python 스크립트를 만들어 어딘가에 배치해야 한다. 다음 단계는 터미널 내의 모든 디렉토리에서 스크립트에 액세스할 수 있도록 하는 것입니다. 이는 플랫폼에 따라 다릅니다. 나는 리눅스를 먼저 설명하고 윈도우를 설명한다.
, 이제 하나의 디렉토리가 아닌 어디서든 프로그램을 실행하는 방법을 찾을 때입니다.
당신은 오류가 덜 발생할 수 있도록 파이썬 프로그램의 맨 위에 이 두 개의 셰뱅을 포함시켜야 한다. 당신은 "파이톤3 셰뱅"과 "파이톤3 인코딩 셰뱅"으로 그들의 의미를 구글에 검색할 수 있다
#!/usr/bin/python3
# -*- coding: utf-8 -*-
터미널에서 다음과 같이 시작합니다(프로그램이 실행되어야 함):
username@pc:~$ python3 /full/path/to/my_file.py
당신이 그것을 작동시키면, 당신의 프로그램을 명령에 연결할 수 있습니다. 홈 디렉토리에 있는 .bashrc 구성 파일에 새 줄을 추가하여 Linux/mac의 bash 별칭을 사용하면 쉽게 이 작업을 수행할 수 있습니다(터미널에서 "cd~"를 사용하여 연결). 이제 이 줄을 .bashrc에 추가하여 별칭으로 예제를 실행합니다
alias my_command='python3 python3 /full/path/to/my_file.py'
이제 모든 디렉터리에서 터미널을 다시 시작해야 합니다.
, 이제 어디서나 파일을 실행할 수 있습니다. 먼저 파일을 인터프리터와 연결해야 합니다. "open with" 메뉴를 사용하여 로컬 파이썬에 파일 형식을 할당합니다.집행하다
이 작업을 올바르게 수행한 경우 파일을 두 번 클릭하면 잠시 동안 터미널이 열리고 스크립트를 실행한 후 닫힙니다. 프로그램이 종료될 때까지 대기하도록 프로그램 끝에 통화를 추가할 수 있습니다.
이제 터미널의 모든 폴더에서 작업할 수 있도록 Windows 시스템에 추가해야 합니다. 시스템 경로에 새 폴더를 추가하여 이 작업을 수행할 수 있습니다. 이 경우 PATH에 추가됩니다. 또는 같은 경로에 이미 있는 위치에 스크립트를 배치할 수도 있습니다.
이제 터미널을 다시 시작하고 를 사용하면 스크립트가 실행됩니다. 이미 PATH에 있는 폴더 대신 사용자 지정 위치에 스크립트를 배치하려면
질문 2
프로그램이 실행되는 동안 터미널에 "hi()" 또는 "hi"를 입력하면 "hello"가 반환됩니다.
나는 당신이 이 맥락에서 돌아오는 것 대신에 인쇄를 의미한다고 생각한다. 콘솔에 문자열을 반환하는 것은 어려울 것입니다. 여기서 사용자 입력을 받을 수 있는 기능을 찾고 있습니다.
질문 3
나의 최종 목표는 언제든지 호출할 수 있는 다양한 기능을 갖는 것이다. 나는 내가 많은 if/elif 문으로 이것을 하드 코딩할 수 있다는 것을 이해하지만 그것은 지저분하고 실용적이지 않아 보이는 해결책이다.
이를 위해 여러 개의 작은 프로그램을 만들거나 하나의 큰 프로그램을 만들 수 있습니다. 또한 즐겨찾는 검색 엔진 없이 "파이썬 명령줄 인수"를 검색해야 합니다. 이 정보를 학습하면 작업에 유용합니다.
질문 4
사용 중인 예로는 다음에 오는 접두사와 명령을 찾고 호출된 함수를 실행할 수 있는 디스코드 봇이 있다
이것은 완전히 다른 질문이다. 당신은 파이썬으로 디스코드 봇을 만드는 것에 대한 정보를 검색해야 한다. 불일치 상태에서 명령이 작동하도록 하는 것은 콘솔에서 명령이 작동하도록 하는 것과 매우 다릅니다.
질문 5
사용자가 보기에 깔끔하게 할 수 있는 방법은 없나요?
네. 파이썬의 기능과 다음과 같은 터미널 화면을 지우는 방법을 알아봐야 합니다:
import os
def clear():
cmd = "clear" # default to linux command
if os.name == ("nt"): # If Machine is running on Windows, use cls
cmd = "cls"
os.system(command)
>>> clear()
불협화음 속에서 사물을 "깨끗하게" 만드는 것은 완전히 다른 질문이며, 불협화음 봇에 대해 먼저 더 배워야 한다. 저는 유튜브 튜토리얼과 불화로 인한 공식 문서를 제안합니다.
간편 단말기를 사용할 수 있습니다
from easy_terminal import terminal
@terminal()
def hi():
print("Hello!")
@terminal()
def hello(answer: str = "world"):
print(f"Hello {answer}!")
결과를 보려면 터미널에 hi 또는 hello를 입력합니다
'개발하자' 카테고리의 다른 글
VSCode Jupyter - 동일한 백엔드를 사용하더라도 다른 파일에 다르게 표시되는 플롯 (0) | 2023.03.04 |
---|---|
Jupyter 노트북에서 env 변수를 설정하는 방법 (0) | 2023.03.03 |
테라폼을 생성하기 전에 리소스가 있는지 확인 (0) | 2023.03.02 |
주피터를 설정하려면 어떻게 해야 하나요장고를 위한 아이피톤 노트북? (1) | 2023.03.02 |
웹 빌드를 위해 SQLite 플러터를 실행할 수 있는 옵션이 있습니까? (0) | 2023.03.01 |