Список координат x y не будет отображаться в сохраненном файле

#python #file

#python #файл

Вопрос:

Я пытаюсь написать файл, который содержит три имени заголовка и список пар координат xy.

 tittel = ""
xn = ""
yn = ""
x = []
y = []
x_v = []
y_v = []

def verdier():
    global x, y, x_v, y_v
    x = input("Skriv inn x-koordinatene, with space between each point : ")
    y = input("Skriv inn y-koordinatene, with space between each point: ")
    x_v = x.split()
    y_v = y.split()
    x_v = [float(xv) for xv in x_v]
    y_v = [float(yv) for yv in y_v]
verdier()

def navn():
    global xn, yn, tittel
    xn = input("Hva skal x-aksen hete? ")
    yn = input("Og hva skal y-aksen hete? ")
    tittel = input("Hva ønsker du som tittel på din nye graf? ")
navn()

def dataliste():
    global x, y
    for x, y in zip(x, y):
        print(x, y)
dataliste()

datalisten = zip(x, y)

def skrivfil():
    global tittel, xn, yn, x, y
    filnavn = input("Skriv inn filnavn: ")
    try:
        fil = open(filnavn, "w")
        fil.write(tittel)
        fil.write("n")
        fil.write(xn)
        fil.write("n")
        fil.write(yn)
        fil.write("n")
        fil.write(datalisten)
        fil.close()
    except:
        print("ERROR")
skrivfil()
  

Пока я получаю только файл, который я могу открыть в блокноте только с заголовками (несмотря на вывод ОШИБКИ, файл находится в / downloads). Я пробовал разделять значения x и y, но это только усложнило его еще больше.

Комментарии:

1. Избавьтесь от try...except , чтобы вы могли видеть ошибку, а затем опубликуйте полную обратную трассировку как часть вашего вопроса.

Ответ №1:

Два комментария к вашей функции записи файла:

  1. Вы можете использовать with open(...) as f для автоматического закрытия файла в случае ошибки.
  2. Вы не можете записывать объекты zip, но вы можете перебирать zip и записывать один за другим.

Это должно сделать:

 def skrivfil():
    filnavn = input("Skriv inn filnavn: ")
    with open(filnavn, "w ") as fil:
        fil.write(tittel)
        for x0, y0 in zip(x_v, y_v):
            fil.write("n%f %f" % (x0, y0))