Python 如何编写一个函数,返回包含从文本文件加载的数据的字典
这是我到目前为止得到的,现在我得到的sankey还没有定义Python 如何编写一个函数,返回包含从文本文件加载的数据的字典,python,Python,这是我到目前为止得到的,现在我得到的sankey还没有定义 def makeSankey (inf): sankey = {} with open("file.txt") as f: for line in f: (key, val) = line.split() sankey[str(key)] = val return makeSankey() for i in sank
def makeSankey (inf):
sankey = {}
with open("file.txt") as f:
for line in f:
(key, val) = line.split()
sankey[str(key)] = val
return makeSankey()
for i in sankey():
print(i),sankey[i]`
文本文件如下所示:
Single,2106
Double,603
Triple,44
Home Run,431
Walk / HBP,1402
Sacrifice Out,137
Other Out,8160
如果
file.txt
包含key、val
之类的行,则此操作有效。使用python script.py file.txt
#!/usr/bin/python2
import sys
def makeSankey(file_name):
sankey = {}
with open(file_name) as f:
for line in f:
(key,val) = line.split(",")
# strip to remove \n
sankey[key] = val.strip()
# return the dic to the caller
return sankey
if __name__ == "__main__":
# received file name as an argument, if not then just pass it to makeSankey fun
sanKeyDic = makeSankey(sys.argv[1])
print(sanKeyDic)
首先,您不能在函数外部访问
sankey
。
不能调用sankey
,因为函数名不是makeSankey
。
您打算使用return makeSankey
执行的操作可能是返回值,该值存储在sankey
中,因此您可以返回sankey
您在固定条件下的代码应该是这样的,我仍然不确定输入是否与您提供的相同,但您可以尝试:
def makeSankey(文件名):
sankey={}
打开(文件名)为f时:
对于f中的行:
(键,val)=行。拆分()
sankey[key]=val
返回桑基
data=makeSankey(“file.txt”)
对于数据中的i:
打印(i,数据[i])
您能否提供一个示例来说明file.text
的外观?sankey
是makeSankey()
函数中的一个局部变量,但您试图在未知的函数外部访问它。这是否回答了您的问题?另外,在函数的末尾,我认为您需要的是return-sankey
,而不是return-makeSankey()
。您能提供一个更好的文件内容示例吗?您能解释一下为什么这样做有效,而OP不有效吗?例如,解释为什么需要返回sankey而不是返回函数CALL我修复了我的代码,但我收到了这个错误:FileNotFoundError:[Errno 2]没有这样的文件或目录:“file.txt”。我将添加所有其他代码以向您展示。我希望文件名作为命令行参数提供。我正在使用IDLE 3 btw。使用sys.argv
读取参数argv[0]
是程序本身的名称,在本例中,argv[1]
是第一个参数的名称file.txt。检查代码。