6

What is the preferred/ usual way of storing data that is entered by the user when running a Python script, if I need the data again the next time the script runs?

For example, my script performs calculations based on what the user enters and then when the user runs the script again, it fetches the result from the last run.

For now, I write the data to a text file and read it from there. I don't think that I would need to store very large records ( less than 100, I'd say).

I am targeting Windows and Linux users both with this script, so a cross platform solution would be good. My only apprehension with using a text file is that I feel it might not be the best and the usual way of doing it.

So my question is, if you ever need to store some data for your script, how do you do it?

5 Answers 5

11

you could use a slite database or a CSV file. They are both very easy to work with but lend themselves to rows with the same type of information.

The best option might be shelve module

import shelve

shelf = shelve.open(filename)
shelf['key1'] = value1
shelf['key2'] = value2

shelf.close()
 # next run
shelf.open(filename)

value1 = shelf['key1']
#etc
Sign up to request clarification or add additional context in comments.

1 Comment

@aaronsterling shelve module by default creates file in current directory. what's the best practice of saving application data in python. I mean inside the module or user's directory?
6

For 100 lines, plain text is fine with either the standard ConfigParser or csv modules.

Assuming your data structure is simple, text affords opportunities (e.g. grep, vi, notepad) that more complex formats preclude.

Comments

6

For small amounts of data, Python's pickle module is great for stashing away data you want easy access to later--just pickle the data objects from memory and write to a (hidden) file in the user's home folder (good for Linux etc.) or Application Data (on Windows).

Of, as @aaronnasterling mentioned, a sqlite3 file-based database is small, fast and easy that it's no wonder that so many popular programs like Firefox and Pidgin use it.

2 Comments

Oh yes, sqlite is perfect for me since it doesn't require any installation.
+1 for mentioning where to save the file.
3

Since you only need the last result, just store the result in a file.

Example

write('something', wb)

It will only store the last result. Then when you re-run the script, do a open and read the previous result.

Comments

-1

Actually the best way is to make a script which when you run it, it sends an automation for the script to execute which automatically stores ALL private and personal information and when you want to access the info go to the directory and open the texts and copy all the info you want I DO NOT HAVE THE SCRIPT

Credit for the idea:Kimmthecoder aka me

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.