[英]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")
这里有几件事:
ecoliseq
这个名称在函数sequenceinfo
之外是不可见的。 因此, print
行会引发NameError
因为Python将无法找到ecoliseq
。 但是, ecoliseq
由函数返回,这意味着您可以通过调用函数然后打印结果来访问其值。
你使sequenceinfo
采用了一个从未使用过的参数。 这应该是文件的路径吗? 我会假设它是,但如果没有,你应该删除它。
这不是一个主要问题,但是当你完成它时你并没有关闭文件。 您应始终管理并正确释放程序所需的资源。 使用文件执行此操作的最简单方法是使用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.