【问题标题】:SyntaxError trying to execute python 3 code with python 2.7SyntaxError 试图用 python 2.7 执行 python 3 代码
【发布时间】:2017-04-20 20:26:28
【问题描述】:

我在python 2.7环境下运行其他代码如下的python 3代码,出现如下错误,请给我一些解决方法的提示,谢谢!如果您想了解更多信息,请告诉我。

python 代码:

#! /usr/bin/env python

from __future__ import print_function
import argparse
from collections import defaultdict
import numpy as np
import os
import sys
import utils


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('target')
    args = parser.parse_args()

    target = defaultdict(list)
    for i, line in enumerate(sys.stdin):
        filename, score, *rect = line.strip().split()
        name, _ = os.path.splitext(filename)
        score = float(score)
        rect = tuple(map(float, rect))
        target[name].append((score, rect))

        if (i + 1) % 1000 == 0:
            print(i + 1, file=sys.stderr)

    for name in target.keys():
        target[name] = np.array(target[name], dtype=utils.dtype)
        target[name].sort(order=('score',))
        target[name][:] = target[name][::-1]

    np.savez_compressed(args.target, **target)

错误:

File "./scripts/lo.py", line 19
    filename, score, *rect = line.strip().split()
                     ^
SyntaxError: invalid syntax

【问题讨论】:

标签: python python-2.7


【解决方案1】:

Extended Iterable Upacking 仅在 Python 3.0 及更高版本中可用。

有关解决方法,请参阅this 问题。

【讨论】:

  • 嗨@timgeb感谢您的cmets,如何在python2中解决这个问题
  • @tktktk0711 请参阅我回答的第二部分。
【解决方案2】:

该脚本使用了被添加到 Python 3.0 中的名为“扩展可迭代解包”的东西。
该功能在PEP 3132 中进行了描述。

要在 Python 2 中做同样的事情,请替换问题行:

    filename, score, *rect = line.strip().split()

这两行:

    seq = line.strip().split()
    filename, score, rect = seq[0], seq[1], seq[2:]

这两个:

   seq = line.strip().split()
   (filename, score), rect = seq[:2], seq[2:]

【讨论】:

    猜你喜欢
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 2013-03-20
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    相关资源
    最近更新 更多