【发布时间】:2014-10-21 16:08:41
【问题描述】:
我在一个模块中编写了一个函数 (read()),我想在我的主脚本中导入:这个函数只是读取一个带有正则表达式的文件并从中创建一个数组。
此函数采用的唯一参数是它必须读取的文件(.txt,只有数字)。
我想在我的主脚本data = open('output99.txt', 'r') 中打开文件,为文件提供对象data,然后将文件对象data 传递给函数,这样我就可以随时更改输入文件......可以吗有问题吗?
因为如果我这样做了,函数不起作用,并返回一个空数组:
def read(data):
n_lines = sum(1 for line in data)
array = np.empty((n_lines,13))
re_re = re.compile('^(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)')
i=0
for line in data:
reg = re_re.search(line)
if(re!=None):
array[i,0] = reg.group(1)
array[i,1] = reg.group(2)
array[i,2] = reg.group(3)
array[i,3] = reg.group(4)
array[i,4] = reg.group(5)
array[i,5] = reg.group(6)
array[i,6] = reg.group(7)
array[i,7] = reg.group(8)
array[i,8] = reg.group(9)
array[i,9] = reg.group(10)
array[i,10] = reg.group(11)
array[i,11] = reg.group(12)
array[i,12] = reg.group(13)
i+=1
return array
如果我在函数内打开文件,它可以正常工作,但是当我想更改输入文件时它会慢得多。谁能解释一下?
【问题讨论】:
标签: python file function argument-passing