2013-11-22 2 views
0

저는 python에 익숙하지 않고이를 사용하여 bash_profile 스크립트 내에서 JSON으로 파일을 구문 분석하고 값을 반환하려고합니다. 나는 if 문을 작동시키는 것처럼 보이지 않는다. 파일의 내용을 읽지 만 if 문 아래에 화살표가있는이 오류가 나타납니다. 파일의Python if 명령문 오류, bash_profile 함수

File "<string>", line 1 
    import sys,json;data=json.loads(sys.stdin.read());if data['123456789']:print... 
                ^
SyntaxError: invalid syntax 

내용 : 나는 if 문을 제거하고 단지를 반환한다면

function find_it { 
    file=~/.pt_branches 
    CURRENT_CONTENTS=`cat $file` 
    echo $CURRENT_CONTENTS | python -c "import sys,json;data=json.loads(sys.stdin.read());if data['$1']:print data['$1'];else:print '';" 
} 

명령

find_it "123456789" 

: 파일을 검색

{"123456789":"Well Hello"} 

기능 가치, 그것은 작동하지만, 난 그것이 존재하지 않으면 반환 할 수 있고 빈 문자열을 반환 할 수 있습니다.

echo $CURRENT_CONTENTS | python -c "import sys,json;data=json.loads(sys.stdin.read());print data['$1'];" 

내가 뭘 잘못하고 있는지에 대한 아이디어가 있으십니까?!?

답변

1

코드 골프를!

"import sys, json; data=json.loads(sys.stdin.read()); print data.get('$1') or ''" 
+0

그게 전부입니다! 감사! –

1

이 작업을 수행 :

echo $CURRENT_CONTENTS | python -c "                                
import sys 
import json 
data = json.loads(sys.stdin.read()) 
if data['$1']: 
    print data['$1'] 
else: 
    print ''"