Como eu escrevo uma função em Python com um nome de arquivo como argumento? [fechadas]

1

** EDITAR:

Desculpe se não estava claro. Deixe-me esclarecer: Estou tentando escrever uma função que leva um nome de arquivo e um número i como argumentos, carrega o arquivo especificado pelo nome do arquivo com numpy.loadtxt () e retorna o número da coluna i (o arquivo imprime uma matriz).

Essencialmente, o que eu gostaria de fazer é:

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

Mas nem me deixa passar da primeira linha, recebo o erro:

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

Então, o que preciso de ajuda é, de alguma forma, tornar um nome de arquivo aceito como um argumento, sem receber essa mensagem de erro.

Eu também tentei

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

E, embora isso seja aceito como uma função, quando eu realmente tento chamá-lo com um nome de arquivo, recebo este erro:

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

Conclusão: como posso usar um nome de arquivo como argumento?

*** a mensagem de erro exata Mensagem TypeError resultante

    
por Patty B 23.09.2017 / 21:36

1 resposta

0

Tente:

import numpy

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

Como exemplo, considere este arquivo:

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

Em seguida, observe loadfile com sucesso em uma coluna:

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

Notas

  1. A linha def de uma definição de função deve terminar com : .

  2. Os argumentos para uma função precisam ser variáveis, como filename , e não sequências de caracteres fixas como 'filename.py' .

  3. Isso será executado, mas não faz o que você deseja:

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

    O texto acima assume x como um argumento, mas depois o ignora e tenta carregar um nome de arquivo cujo nome é o único caractere x .

  4. Isso não funcionará:

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

    filename.py não é um nome válido para uma variável simples. Mesmo se fosse, o código não tenta usar esse nome de variável. Em vez disso, ele tenta carregar um arquivo cujo nome é a string de caracteres filename.py .

por John1024 23.09.2017 / 21:54