데이터를 살짝 보는 스크립트

Pythn에서 pickle로 절인 데이터 처리


pytohon을 사용할 때, 어려운 데이터를 디스크에 저장하는 것을 고려하지 않을 수 있습니다.
매우 편리하지만 저장된 데이터를 볼 때 좀 번거롭다.
그때 tips

단순 디스플레이


open pickle.저는 로드로 print 스크립트를 만들고 싶어요.
역시 있네..
https://qiita.com/yagays/items/3dd084469a7444714695
지령이 좀 길어서 알리스만 만들면 돼요.

각양각색의 상황


단순히 표시하면 상술한 바와 같이 할 수 있지만 복잡한 json(또는 여러 층의 dict)을 저장하고 상호작용을 통해 내용을 보고 싶고classinstance를 저장하고 호출하고 조작하는 방법을 다시 생각해 보고 싶습니다.

데이터 읽기 후 상호 작용 환경 호출


여러 가지 일을 하려면 변수를 만들어 보세요.이런 상태에서 대화 환경을 시작해 사용자에게 맡기는 방법이 생각났다.
나는 이 실현 방법을 조사했다.

ipython에서 호출


python의 강력하고 사용하기 쉬운 대화 환경은 역시 이것이다.
데이터pickle를 읽은 상태에서 ipython을 읽으면 끝입니다.
제가 찾아봤어요.
다음은 됐습니다.
$ ipython -i -c "import pickle; fd = open(<対象ファイル名>, 'rb'); data = pickle.load(fd)"
-i는 처리 후 대화 환경에 들어간 상태에서 stop을 진행한다.
- c 매개 변수에 대한 명령을 실행합니다.
클래스 실례를 호출하려면, 이 클래스를 정렬하십시오. 그렇지 않으면 오류가 발생하기 때문에, 이class를 정의하는 모듈을 가져와야 합니다.
거기까지 가면 실 한 가닥 맛도 별로인데...
덧붙여 말하자면, 쓰기에 얽매이지 않고, hogehoge를 처리할 것이다.py에 쓰기
$ ipython -i ./hogehoge.py
하면 됩니다.

ipython 호출


반대로py 파일을 만들고 처리를 거친 후 ipython을 호출하는 방법도 있다.
이렇게
import pickle
import IPython


with open(<対象ファイル>, 'rb') as fd:
    data = pickle.load(fd)
    
IPython.start_ipython(user_ns=locals())
start_ipython은 ipython의 상호작용 환경을 호출하는 명령을 사용합니다.
매개 변수를 주지 않으면 이전 처리가 어렵지 않기 때문에userns에locals()를 사용하여 이전의 이름과 공간 정보를 모두 던지는 역기.
pickle에서class instance를 읽을 때 용도도 대체적으로 제한되어 있기 때문에 위의python 파일을 만드는 것이 좋습니다.
단, 매개 변수로 파일 이름을 찾을 수 있도록argparse를 추가한 후
ValueError      Traceback (most recent call last)
/usr/lib/python3.8/codeop.py in __call__(self, source, filename, symbol)
    140     def __call__(self, source, filename, symbol):
--> 141         codeob = compile(source, filename, symbol, self.flags, 1)
    142         for feature in _features:
    143             if codeob.co_flags & feature.compiler_flag:

ValueError: source code string cannot contain null bytes
아이고
argparse 단독/IPython 단독이면 순조롭게 진행됩니다.
미묘한 버전의 문제라고 느꼈지만 차근차근 따지는 게 고통스러워서 포기하고 싶었어요.

서로 다른 대화 환경


파이썬 명령어의 셸을 사용할 수 있는 곳의 xonsh입니다.
gitsome에서 사용하는 것 같아서 ipython을 대체할 수 없습니다.
..결과적으로namespace 계승타 상태에서 xonsh를 시작하는 방법을 찾을 수 없습니다.
시동 자체는 아래에서 진행할 수 있다.
from xonsh import main


main.main()

총결산


단순한 호출 + 대화 환경이라면 ipythn-i-c를 사용하십시오.
복잡하면 미리 hogehoge.py, iptyhon-i hogehoge를 만듭니다.py를 쓰다.

좋은 웹페이지 즐겨찾기