데이터 세트에 적용 할 함수를 제공하려는 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에 정의 된 함수를 사용합니다.
파이썬에서 이것을 수행하는 방법이 있습니까? 그렇다면 가장 좋은 방법은 무엇입니까?
예 :
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] 삭제
몇 마디 만하겠습니다