Синтаксическая ошибка при использовании sys.argv в качестве аргумента в функции - PullRequest
0 голосов
/ 04 апреля 2020

Получена синтаксическая ошибка, вызванная этой строкой кода

def load(sys.argv):
    with open(sys.argv[1]) as file:
        reader = json.load(file)
        return reader['json']

Сообщение от stderr:

    def load(sys.argv):
                ^
SyntaxError: invalid syntax

Конечно, я импортировал sys.

На самом деле, параметры внутри функции, которые используют sys.argv, работают правильно. Кто-нибудь знает решение этой проблемы?

Ответы [ 3 ]

1 голос
/ 04 апреля 2020

Вы не можете использовать sys.argv в качестве аргумента функции. Просто переименуйте аргумент, и он будет работать:

import sys
def load(args):
    # your logic

print(load(sys.argv))
1 голос
/ 04 апреля 2020

Функции передают параметры и имена переменных, их там не объявляют. Ваш код должен выглядеть следующим образом

def load(arguments):
    # Your Code
    firstArg = arguments[0]

load(sys.argv)
0 голосов
/ 04 апреля 2020

Если вы собираетесь указать, что вы хотите sys.argv [1] внутри функции, вам не понадобится какой-либо параметр. Вы можете сделать его функцией, не требующей аргументов.

import sys

def load():
    with open(sys.argv[1]) as file:
        # code to execute...
        # code to execute...

load()

Мое предложение применимо, только если вы хотите открыть только один файл, используя один параметр командной строки (с индексом 1). Если вы хотите открыть другие, используя другие параметры командной строки, вам понадобится параметр в вашей функции, такой как 'args' (как сказал Дэвид Театер), чтобы сделать код более гибким. Параметры задаются как новые имена переменных, которые будут использоваться в рамках вашей функции. В вашем коде вы как будто пытаетесь установить sys.argv в качестве имени функции, которое не работает, потому что это уже функция.

...