Сохранение файлов в Python с использованием метода «с» - PullRequest
0 голосов
/ 25 мая 2019

Я хочу создать файл и сохранить его в формате json. Каждый пример, который я нахожу, определяет метод open. Я использую Python 2.7 на Windows. Пожалуйста, помогите мне понять, почему 'open' необходим для файла, который я сохраняю впервые.

Я прочитал все уроки, которые смог найти, и исследовал эту проблему, но безуспешно. Я не хочу создавать файл вне моей программы, а затем моя программа перезаписывает его.

Вот мой код:

def savefile():
    filename =  filedialog.asksaveasfilename(initialdir = 
    "./Documents/WorkingDirectory/",title = "Save file",filetypes = (("JSON 
    files","*.json"), ("All files", "*.")))
    with open(filename, 'r+') as currentfile:
        data = currentfile.read()
    print (data)

Вот эту ошибку я получаю:

Исключение в обратном вызове Tkinter (последний вызов последним):
Файл "C: \ Python27 \ lib \ lib-tk \ Tkinter.py", строка 1542, в , вызов вернуть self.func (* args) Файл "C: \ Users \ CurrentUser \ Desktop \ newproject.py", строка 174, в файле сохранения с открытым (имя файла, 'r +') в качестве текущего файла: IOError: [Errno 2] Нет такого файла или каталога: u'C: /Users/CurrentUser/Documents/WorkingDirectory/test.json'

1 Ответ

2 голосов
/ 25 мая 2019

Хорошо, я понял это! Проблема была в режиме «r +». Поскольку я создаю файл, нет необходимости читать и писать, просто пишите. Поэтому я изменил режим на «w», и это исправило его. Я также добавил «.json», чтобы он автоматически добавлялся после имени файла.

def savefile():
    filename =  filedialog.asksaveasfilename(initialdir = 
    "./Documents/WorkingDirectory/",title = "Save file",filetypes = (("JSON 
    files","*.json"), ("All files", "*.")))
    with open(filename + ".json", 'w') as currentfile:
        line1 = currentfile.write(stringone)
        line2 = currentfile.write(stringtwo)
        print (line1,line2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...