명령 줄 매개 변수로 파일 x에 지정된 함수를 파이썬의 파일 y에 전달하는 가장 좋은 방법

hechth

데이터 세트에 적용 할 함수를 제공하려는 tfrecords 데이터 세트를 만들기 위해 래퍼 또는 파이프 라인을 작성하고 있습니다.

사용자가 데이터를 변환하기 위해 스크립트에서 호출되는 다른 파이썬 파일에 정의 된 함수를 삽입 할 수 있도록하고 싶습니다.

왜? 사용자가해야 할 일은 데이터를 올바른 형식으로 가져 오는 함수를 작성하는 것뿐입니다. 그러면 기존 코드가 나머지 작업을 수행합니다.

사용자가 동일한 파일에 함수를 작성하고 호출하거나 import 문 등을 갖도록 할 수 있다는 사실을 알고 있습니다.

그래서 최소한의 예로서 y.py 파일을 갖고 싶습니다.

def main(argv):
    # Parse args etc, let's assume it is there.

    dataset = tf.data.TFRecordDataset(args.filename)
    dataset = dataset.map(args.function)
    # Continue with doing stuff that is independent from actual content

그래서 제가하고 싶은 것은

    python y.py --func x.py my_func

그리고 dataset.map (...)의 x.py my_func에 정의 된 함수를 사용합니다.

파이썬에서 이것을 수행하는 방법이 있습니까? 그렇다면 가장 좋은 방법은 무엇입니까?

베네딕트 윌킨스 AI
  1. 파일 이름을 스크립트 (및 함수 이름)에 인수로 전달합니다.
  2. 파일을 문자열로 읽어서 주어진 함수를 추출 할 수 있습니다.
  3. Python exec ()사용 하여 코드 실행

예 :

file = "def fun(*args): \n  return args"
func = "fun(1,2,3)"

def execute(func, file):
    program = file + "\nresult = " + func
    local = {}
    exec(program, local)
    return local['result']

r = execute(func, file)
print(r) 

그러나 여기 와 비슷 하지만 전역 범위에서 locals()호출하지 않기 때문에 사용해야합니다 exec.

참고 :의 사용 exec은 다소 위험합니다. 기능이 안전한지 확인해야합니다. 사용하는 경우 괜찮습니다!

도움이 되었기를 바랍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관