**编辑:
抱歉,如果我说得不清楚。让我澄清一下:我正在尝试编写一个函数,该函数以文件名和数字 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.])
笔记
def
函数定义的行必须以结尾:
。函数的参数需要是变量,例如
filename
,而不是固定字符串'filename.py'
。这将运行但不会执行您想要的操作:
def loadfile(x, i): f = numpy.loadtxt('x', i) return(f)
上述代码将
x
作为参数但随后忽略它并尝试加载名称为单个字符的文件名x
。这也行不通:
def loadfile(filename.py, i): f = numpy.loadtxt('filename.py', usecols=(i)) return(f)
filename.py
不是简单变量的有效名称。即使有效,代码也不会尝试使用该变量名。相反,它会尝试加载名称为字符串的文件filename.py
。