Python Forum
dictionary output to text file (beginner) - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: Homework (https://python-forum.io/forum-9.html)
+--- Thread: dictionary output to text file (beginner) (/thread-40326.html)



dictionary output to text file (beginner) - Delg_Dankil - Jul-11-2023

I'm trying to learn Python and I got stuck on something.
I'm looping through a dictionary and I'm printing out keys and their associated dictionary values.
I now want to take this output from my loop and instead of printing it to the screen, I need to write it to a text file.

here is an exmple from the web-
with open('datafile1.txt', 'a') as f:
    f.write('\n')
    f.write('monkey')
    f.write('\n')
    f.write(str(15))
I understand how this works, but how do I do the same for my loop? To further complicate things, I don't know if any of my data will throw an error because
its value is numneric and not a string.

Here is my loop that correctly prints my dictionary elements and values.
I need help in how I can redirect the output to a text file.

print("\nThis prints the key and its associated values")
for person in data['returnData']:
     print(f"Elid: {person['elid']}, Last Name: {person['name']}")
Thanks for taking a look.
Delg


RE: dictionary output to text file (beginner) - Pedroski55 - Jul-12-2023

You could do that like this. First I need a dictionary containing some data:

# open any old text file
mytext = '/home/pedro/summer2023/breakingnewsenglish/UK_rationing.txt'
with open(mytext) as t:
    data = t.readlines()
print('data list is', len(data), 'long')
# make a dictionary
# all the keys are integers in this case, all the values are lines of text
mydict = {i:data[i] for i in range(len(data))}
# show the content of mydict
for item in mydict.items():
    print(item)
Now get some data from the dictionary and put it in a list

# an empty list to take the dictionary items you want to save in a text file
mylist = []
# just get the first 9 lines
for i in range(10):
    mylist.append(mydict[i])
# show the things to be saved to text
for m in mylist:
    print(m)
Now make the list into a string and write the string to the text file

# join the list to a string
# it is better to make a list than to create strings
# strings take up much more memory because they persist, so I have been told
mystring = ''.join(mylist)
# write the string to a text file
dict2text = '/home/pedro/summer2023/breakingnewsenglish/UK_rationing_part.txt'
with open(dict2text, 'w') as out:
    out.write(mystring)
    print('Some text from a dictionary saved as', dict2text)
3 steps to heaven! have fun learning!


RE: dictionary output to text file (beginner) - deanhystad - Jul-12-2023

You can tell print() to print to a file.:
with open('datafile1.txt', 'a') as f:
    print("\nThis prints the key and its associated values")  # Prints to terminal
    for person in data['returnData']:
        print(f"Elid: {person['elid']}, Last Name: {person['name']}", file=f)  # Prints to file