Python 将i/o归档到字典中?

Python 将i/o归档到字典中?,python,dictionary,io,Python,Dictionary,Io,这是我用Python编写的第一个函数,所以我确信有很多不正确的地方。我试图以作者的格式读入作者的文件名和他们的书的标题,每行的标题都要读入格式词典: {0: [" The Hitchhiker's Guide To The Galaxy", 'Douglas Adams' ] } 随着向下每一行的读取,键将递增。这是我最好的一次尝试,但我一直没有成功。你有什么建议吗?我只是返回第0个值来检查函数是否正常工作 def read_books(file_name): data={}

这是我用Python编写的第一个函数,所以我确信有很多不正确的地方。我试图以作者的格式读入作者的文件名和他们的书的标题,每行的标题都要读入格式词典:

{0: [" The Hitchhiker's Guide To The Galaxy", 'Douglas Adams' ] }
随着向下每一行的读取,键将递增。这是我最好的一次尝试,但我一直没有成功。你有什么建议吗?我只是返回第0个值来检查函数是否正常工作

def read_books(file_name):
    data={}
    try:
        with open(file_name, "r") as fh:
            for line in fh:
                try:
                    (auth, title) = line.split('','')
                    for i in lines:
                        data[i]=[title.strip(), auth.strip()]
                except:
                    continue

        return data[0]

    except:
        return -1

print(read_books(books.txt))

你实际上走在正确的轨道上。在迭代文件时,还可以使用获取当前索引/行号

以下是循环的更新版本:

def read_books(file_name):
    data = {}
    with open(file_name, "r") as f:
        for line_number, line in enumerate(f):
            try:
                auth, title = line.split(",")
                data[line_number] = [title.strip(), auth.strip()]
            except ValueError:
                continue
    return data

您的代码缩进严重(至少如此),因此在当前状态下,帮助您将非常困难。请您解释一下如何更好地帮助您。您不应该使用类似的裸
子句,因为它们会捕获所有异常,甚至是您可能需要看到的异常,如
SyntaxError
。请改为具体说明,或者至少在调试时将其忽略。裸
try/except
糟透了。特别是在这里,它没有被捕获的理由。事实上,它不是,特别是在这种情况下,因为它是可能的
。split()
可能会抛出
ValueError
,如果分隔行错误,或者文件中可能有空行。哦,是的。在这种情况下,我更喜欢在打开包装之前测试物品的数量。或者更具体地说明异常情况。@Scotchnowplease顺便说一句,如果文件不存在,您可以返回
None
,而不是返回
-1
,这在Python中比C更常见。@Scotchnowplease我跳过了外部的
try/except
,因为我发现在文件不存在的情况下引发错误更有意义。但是正如我上面所说的,如果您愿意,您可以返回
None
而不是
-1
。如果文件被找到并读取,它将返回
数据