如何从文件中创建字典

时间:2016-12-09 06:51:36

标签: python file dictionary io

我的文件位于包含带图片的文本文档的文件夹中。文件"明星"包含A.txt

我的目标是获得一个dictonary,它会说{' A',A.txt} A.txt是实际文件的路径A.txt

import os




def main():

    # relative path to the folder where you unzipped the ASCII art files
    #folder = "stars"
    # or use an absolute path to the folder. example:
    folder = r"C:\Users\Alison\Documents\a CPS 111\Bonus PA\stars\stars"

    # os.listdir(folder) returns a list of files in folder
    file_list = os.listdir(folder)
    letter_art = {}



    for fname in file_list:
        # example: letter[0] is "A" and letter[1] is "txt"
        letter_extension_list = fname.split(".")
        key = letter_extension_list[0]

        value = letter_extension_list[1]
        value = "%s."%(key) + value 

        letter_art[key] = value 
        fname = "\\".join([folder, value])
    word = str(input("Please input a letter: "))  
    word = word.upper()
    for letter in word:
        print(letter_art[letter])



        print(fname)


main()

我真的在努力使目录工作,因为我最终会到达用户输入单词的位置,它将根据星星中文件的字母输出图形。

因此文件夹中的文件包含与字母关联的文本文档。有26个文件A-Z A.txt,B.txt等...

目标是创建一个字典,说{' A',A.txt} 所以,如果用户输入" hi"计算机找到h.txt和i.txt并在文本文件中显示信息。

3 个答案:

答案 0 :(得分:0)

如果你目前的目标是获得一个字典,其中键是字母,值是文件路径,你可以试试这个:

func jsonRequest()
{

    let url =  "url"
    //if you want to add paramter
    parametr = ["username" : "user" , "password"]


    Alamofire.request(url, method: .post, parameters: nil, encoding: JSONEncoding.default)
        .responseJSON { response in
            // print(response)
            //to get status code
            if let status = response.response?.statusCode {
                switch(status){
                case 201:
                    print("example success")
                default:
                    print("error with response status: \(status)")
                }
            }

            //to get JSON return value
            if let array = response.result.value as? //NSDictionary [[String : Any]]
            {


            }
    }

}

答案 1 :(得分:0)

看起来你的覆盖key。首先是文件名,例如" A"但如果这个名字是" AB"然后密钥会引起问题(例如访问密钥[1]),但也许你不会遇到这种情况。

同样letter_art[key]似乎没有在循环中做任何事情"#将所有A-Z作为键"。这是旧代码吗?

稍后在没有做任何事情的情况下也会覆盖该值,您是否只想尝试获取最后一行?

你是否只想实现@Yash Dhandhania的回答?

答案 2 :(得分:0)

编辑后

import os
folder = r"C:\Users\sarah\Documents\a CPS 111\Bonus PA\stars\stars"

file_list = os.listdir(folder)
print(file_list)
letter_art = {}

file_list.sort()

for fname in file_list:
    letter_extension_list = fname.split(".")
    key = letter_extension_list[0]
    letter_art[key]=folder+'\'+fname

print(letter_art)

word=raw_input('Input : ')
letters=list(word)

for letter in letters:
    if letter in letter_art:
        print("**File : %s***\n"%letter)
        with open(letter_art[letter]) as f:
            print f.read()