簡體   English   中英

SyntaxError嘗試使用python 2.7執行python 3代碼

[英]SyntaxError trying to execute python 3 code with python 2.7

我在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

擴展Iterable Upacking僅在Python 3.0及更高版本中可用。

有關變通辦法,請參閱問題。

該腳本使用的是添加到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:]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM