Глава 8. Данные должны куда-то попадать
1. Присвойте строку 'This is a test of the emergency text system' переменной test1 и запишите переменную test1 в файл с именем test.txt:
>>>> test1 = 'This is a test of the emergency text system'
>>>> len(test1)
>43
Вот как можно сделать это с помощью функций open, write и close:
>>>> outfile = open('test.txt', 'wt')
>>>> outfile.write(test1)
>43
>>>> outfile.close()
Или можете использовать with и избежать вызова close (Python сделает это за вас):
>>>> with open('test.txt', 'wt') as outfile:
>…·····outfile.write(test1)
>…
>43
2. Откройте файл test.txt и считайте его содержимое в строку test2. Совпадают ли строки test1 и test2?
>>>> with open('test.txt', 'rt') as infile:
>…·····test2 = infile.read()
>…
>>>> len(test2)
>43
>>>> test1 == test2
>True
3. Сохраните следующие несколько строк в файл books.csv. Обратите внимание на то, что, если поля разделены запятыми, вам нужно заключить поле в кавычки, если оно содержит запятую:
>author,book
>J R R Tolkien,The Hobbit
>Lynne Truss,"Eats, Shoots & Leaves"
>>>> text = '''author,book
>… J R R Tolkien,The Hobbit
>… Lynne Truss,"Eats, Shoots & Leaves"
>… '''
>>>> with open('test.csv', 'wt') as outfile:
>…·····outfile.write(text)
>…
>73
4. Используйте модуль csv и его метод DictReader, чтобы считать содержимое файла books.csv в переменную books. Выведите на экран значения переменной books. Обработал ли метод DictReader кавычки и запятые в заголовке второй книги?
>>>> with open('test.csv', 'rt') as infile:
>…·····books = csv.DictReader(infile)
>…·····for book in books:
>…·········print(book)
>…
>{'book': 'The Hobbit', 'author': 'J R R Tolkien'}
>{'book': 'Eats, Shoots & Leaves', 'author': 'Lynne Truss'}
5. Создайте CSV-файл с именем books.csv и запишите его в следующие строки:
>title,author,year
>The Weirdstone of Brisingamen,Alan Garner,1960
>Perdido Street Station,China Miéville,2000
>Thud!Terry Pratchett,2005
>The Spellman Files,Lisa Lutz,2007
>Small Gods,Terry Pratchett,1992
>>>> text = '''title,author,year
>… The Weirdstone of Brisingamen,Alan Garner,1960
>… Perdido Street Station,China Miéville,2000
>… Thud!Terry Pratchett,2005
>… The Spellman Files,Lisa Lutz,2007
>… Small Gods,Terry Pratchett,1992
>… '''
>>>> with open('books.csv', 'wt') as outfile:
>…·····outfile.write(text)
>…
>201
6. Используйте модуль sqlite3, чтобы создать базу данных SQLite books.db и таблицу books, содержащую следующие поля: title (text), author (text) и year (integer):
>>>> import sqlite3
>>>> db = sqlite3.connect('books.db')