Arhn - архитектура программирования

Сохранение файлов в Python с помощью метода with

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

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

Вот мой код:

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

25.05.2019

Ответы:


1

Хорошо, я понял это! Проблема была в режиме "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)
25.05.2019
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..