以太坊生成起源 Python 语法

Ethereum generating genesis Python Syntax

您好,我尝试生成创世文件但出现此错误:

C:\Python34>python mk_genesis_block.py --extradata 0x11bbe8db4e347b4e8c937c1c837
0e4b5ed33adb3db69cbdb7a38e1e50b1b82fa > genesis_block.json
  File "mk_genesis_block.py", line 293
    print json.dumps(evaluate(), indent=4)
             ^
SyntaxError: invalid syntax

编辑: 这是周围的线条:

if __name__ == '__main__':
    print json.dumps(evaluate(), indent=4)

然后是EOF。可以查看整个文件here 由于违规行似乎只是输出,我评论它并得到另一个错误:

C:\Python34>python -tt mk_genesis_block.py --extradata 0x11bbe8db4e347b4e8c937c1
c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa > genesis_block.json
Traceback (most recent call last):
  File "mk_genesis_block.py", line 124, in <module>
    EXTRADATA = (d[2:] if d[:2] == '0x' else d).decode('hex')
AttributeError: 'str' object has no attribute 'decode'

与其他错误一起让我想知道是否正在操作字符串而不是 json 对象?这是整个 arg 解析部分:

# Grab the extra data command line argument
if '--extradata' in sys.argv:
    d = (sys.argv+[None])[sys.argv.index('--extradata') + 1]
    EXTRADATA = (d[2:] if d[:2] == '0x' else d).decode('hex')
else:
    EXTRADATA = ''

我还制作了一个导入 json 包的测试文件,转储和解码方法有效。

print in python3 是一种方法而不是语句 print( "text" ) ... 我也相信 str.decode 在 python3 中被删除 ... 相反使用 codecs.decode(my_str,encoding)