繁体   English   中英

将文件作为函数参数传递

[英]Passing a file as a function argument

如果我在名为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. ecoliseq这个名称在函数sequenceinfo之外是不可见的。 因此, print行会引发NameError因为Python将无法找到ecoliseq 但是, ecoliseq由函数返回,这意味着您可以通过调用函数然后打印结果来访问其值。

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

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

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

#!/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('#')将返回文件中每个 #的计数。 但是你在问题中说过你只想计算以#开头的条目。 如果是这样,您将需要修复此错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM