[英]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.