如何在 Python 中编写一个以文件名作为参数的函数?

如何在 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

尝试:

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

相关内容