简体   繁体   中英

How do I open a .txt file for data storage in Python?

I really would like to store some variables in a.txt file (or something else, if necessary) to be able to use them again even after closing the python terminal.

I've also tried to create the file before I append to it: dat = open("data22", "x") but that didn't solve the problem...

n = "hello"
dat = open("data22.txt", "a")
dat.write(n)
dat.close()

my full code is here:

import colorama
from colorama import init, Fore
colorama.init()
while True:
    e = input( "--> ")
    while "n" in str(e):
        e = e.replace("n", str(n))
        print("   ", e)
    if e.find("v") == 0:
        n = round(((float(e[1:]))**(1/2)), 10)
        print(Fore.LIGHTBLUE_EX + str(n) + Fore.RESET)
    elif e.find("b") == 0:
        n = ((float(e[1:]))**(2))
        print(Fore.LIGHTBLUE_EX + str(n) + Fore.RESET)
    elif "v" in str(e):
        n = round(((float(e[(e.find("v") + 1):]))**(1/(float(e[:(e.find("v"))])))), 10)
        print(Fore.LIGHTBLUE_EX + str(n) + Fore.RESET)
    elif "b" in str(e):
        n = ((float(e[(e.find("b") + 1):]))**(float(e[:(e.find("b"))])))
        print(Fore.LIGHTBLUE_EX + str(n) + Fore.RESET)
    else:
        print(Fore.LIGHTRED_EX + "please define if you want to square or pull the root from your number (%s), by typing n 'v' for root or n 'b' for square..." % e)
        print("examples:    3v%s  --> (cubic-root of %s)" % (e, e))
        print("             2b%s  --> (square of %s)" % (e, e) + Fore.RESET)
    dat = open("data22.txt", "a")
    dat.write(n)
    dat.close()

The problem is, that the file "data22.txt" doesn't even appear in the file explorer.

with open(..., 'a') you only append to a file, but can not create it. So you may need to check if the file exists and only then append, and create it otherwise.

See Writing to a new file if it doesn't exist, and appending to a file if it does for more details

if os.path.exists(filename):
    data = open("data22.txt", "a")  # append if already exists
else:
    data = open("data22.txt", "w")  # make a new file if not

Just open file with a+ mode it will open exist file else will create new for you.

dat = open("data22.txt", "a+")

Also you may want to open the file outside while loop to avoid file opening and closing every time.

dat = open("data22.txt", "a+")
while True:
    ...
    dat.write(n)

dat.close()

More Pythonic

open file using with for safely file closing

with open("data22.txt", "a+") as dat:
    while True:
        ...
        dat.write(n)

And most important

You must add condition for break statement in while loop to not to fall into infinite loop

while True:
    ...
    if condition:
        break

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM