Как мне написать функцию на Python с именем файла в качестве аргумента? [закрыто]

** РЕДАКТИРОВАТЬ:

Извините, если я не понял. Позвольте мне уточнить: я пытаюсь написать функцию, которая принимает имя файла и номер i в качестве аргументов, загружает файл, указанный именем файла, с помощью numpy.loadtxt () и возвращает столбец номер i (файл печатает массив).

По сути, я хотел бы сделать следующее:

def loadfile(filename.py, i):
    f = numpy.loadtxt('filename.py', usecols=(i))
    return(f)

Но это даже не позволяет мне пройти первую строку, я получаю сообщение об ошибке:

def loadfile(filename.py, i)
                     ^
Syntax Error: Invalid Syntax

Так что мне нужна помощь, так это как-то сделать имя файла принятым как аргумент, не получая сообщения об ошибке.

Я также пробовал

def loadfile(x, i):
    f = numpy.loadtxt('x', i)
    return(f)

И хотя это принимается как функция, когда я на самом деле пытаюсь вызвать ее с именем файла, я получаю следующую ошибку:

loadfile(sampledata.py, 2)
NameError: name 'sampledata' is not defined.

Итог: как я могу использовать имя файла в качестве аргумент?

*** точное сообщение об ошибке результирующее сообщение TypeError

1
задан 24 September 2017 в 01:07

1 ответ

Попытка:

import numpy

def loadfile(filename, i):
   return numpy.loadtxt(filename, usecols=(i,))

Как пример, рассмотрите этот файл:

$ cat nums.txt
1 2 3
4 5 6
7 8 9

Затем наблюдайте loadfile успешно считанный в столбце:

>>> loadfile('nums.txt', 2)
array([ 3.,  6.,  9.])

Примечания

  1. def строка функционального определения должна закончиться :.

  2. аргументы функциональной потребности быть переменными, как filename, не починенные строки как 'filename.py'.

  3. Это выполнит, но не делает то, что Вы хотите:

    def loadfile(x, i):
        f = numpy.loadtxt('x', i)
        return(f)
    

    Вышеупомянутое берет x в качестве аргумента, но затем игнорирует его и пытается загрузить имя файла, имя которого является отдельным символом x.

  4. Это не будет работать также:

    def loadfile(filename.py, i):
        f = numpy.loadtxt('filename.py', usecols=(i))
        return(f)
    

    filename.py не допустимое название простой переменной. Даже если это было, код не пытается использовать то имя переменной. Вместо этого это пытается загрузить файл, имя которого является строкой символов filename.py.

0
ответ дан 24 September 2017 в 11:07

Другие вопросы по тегам:

Похожие вопросы: