将文件作为函数参数传递

时间:2014-11-05 00:33:54

标签: python file function

如果我在名为documents:

的目录中有一个文本文件(sequencedata.txt
/~/documents/sequencedata.txt

如何定义名为sequenceinfo的函数,该函数将计算上述途径文件中以#开头的条目数,并使用语法"there are * entries"返回此计数, *是计入的条目数?

到目前为止我所拥有的:

#!/usr/bin/python
def sequenceinfo(sequencedata):
    my_file = open("/~/documents/sequencedata.txt")
    my_dna = my_file.read()
    ecoliseq = my_dna.count('#')
    return ecoliseq

print("There are " + str(ecoliseq) + " sequences")

1 个答案:

答案 0 :(得分:3)

这里有一些事情:

  1. ecoliseq函数之外看不到名称sequenceinfo。因此,print行会引发NameError,因为Python无法找到ecoliseq。但是,函数返回ecoliseq,这意味着您可以通过调用函数然后打印结果来访问其值。

  2. 您让sequenceinfo接受了一个从未使用过的参数。这应该是文件的路径吗?我会假设它是,但如果没有,你应该删除它。

  3. 这不是一个主要问题,但是当你完成它时你没有关闭文件。您应始终管理并正确释放程序所需的资源。使用文件执行此操作的最简单方法是使用with-statement打开它们,这将自动为您关闭它们。

  4. 总之,您的代码应如下所示:

    #!/usr/bin/python
    def sequenceinfo(path):
        with open(path) as my_file:
            my_dna = my_file.read()
        ecoliseq = my_dna.count('#')
        return ecoliseq
    
    print("There are " + str(sequenceinfo("/~/documents/sequencedata.txt")) + " sequences")
    

    此外,可能存在第四个问题,my_dna.count('#')将返回文件中每个 #的计数。但是你在问题中说过你只想计算以#开头的条目。如果是这样,您将需要修复此错误。