【问题标题】:Python: dynamic list namesPython:动态列表名称
【发布时间】:2013-01-30 00:09:40
【问题描述】:

我正在尝试将一个文件放在一起,该文件接受来自用户的输入以及他们想要分析的多个文本文件。作为第一步,我只想获取他们输入的每个文档的内容(可以是任意数量,没有限制),并将文档每一行的内容记录为列表中的一个项目。我想为用户输入的每个文档都有一个单独的列表,但这就是我苦苦挣扎的地方。以下是我到目前为止所得到的。

def user_input():
    prompt = raw_input("Please input the full name (e.g. text_file.txt) or path of a text file:")
    global lst
    lst = {}
    lst[0] = prompt
    global file_count
    file_count = 1
    while len(prompt) > 0:
        prompt = raw_input("Please input any additional text files or simply press enter to continue:")
        if len(prompt) > 0:
            lst[file_count] = prompt
            file_count = file_count+1
    return lst

def read_in():
    for x in lst.values():
        file = open(x)
        x = file.readlines()

我现在被困在这部分,因为我不确定如何为每个列表动态分配名称。任何帮助将不胜感激!

【问题讨论】:

  • 当您认为需要动态变量时,请改用字典。 somedict[name] = somelist 总是比试图弄清楚如何动态设置新变量更容易。
  • lstfile_count 定义为全局变量似乎没有必要。
  • 感谢大家的cmets,非常感谢!

标签: python list dynamic


【解决方案1】:
def get_filenames():
    filelist = []
    prompts = [
        "Please input the full name (e.g. text_file.txt) or path of a text file:",
        "Please input any additional text files or simply press enter to continue:"
    ]
    while True:
        filename = raw_input(prompts[len(filelist) > 0]).strip()
        if not filename:
            break
        filelist.append(filename)
    return filelist

def get_filelines(filelist):
    files = {}
    for filename in filelist:
        with open(filename, 'rb') as fp:
            files[filename] = fp.readlines()
    return files

if __name__=='__main__':
    print get_filelines(get_filenames())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    相关资源
    最近更新 更多