Python 如何编写一个函数,返回包含从文本文件加载的数据的字典

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

这是我到目前为止得到的,现在我得到的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 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。检查代码。