Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Управляемся с изменением требований




Управляемся с изменением требований

Рефакторинг

Выводы

Файлы

 

11. Файлы

 

«девять миль ходьбы это не шутка, особенно во время дождя. » —Harry Kemelman, The Nine Mile Walk

На моём Windows ноутбуке было 38493 файла, прежде чем я установил одно приложение. Установка Python 3 добавила почти 3000 файлов к общему объёму. Файлы представляют собой первичную парадигму хранения информации в основных операционных системах; эта концепция настолько укоренилась, что большинство людей не воспримут нечто другое альтернативное. Образно говоря, Ваш компьютер тонет в море файлов.

11. 2 Чтение из текстовых файлов

Прежде чем читать из текстового файла, его требуется открыть. Открытие файла в Python легко выполнить:

a_file = open('examples/chinese. txt', encoding='utf-8')

Python имеет встроенную функцию open(), которой передается имя файла в качестве аргумента. В примере имя файла 'examples/chinese. txt' и в нём есть 5 интересных вещей:

  1. Это не просто имя файла, это комбинация пути к каталогу и имя файла. Гипотетически, в функцию открытия файла можно было бы передать два параметра: путь к файлу и имя файла, но в функцию open() можно передать только один. В Python, когда это необходимо вы можете включать все или некоторые пути к каталогу.
  2. При указании пути к каталогу используется / (прямая обратная черта, слэш, правый слэш), не обсуждая какая операционная система используется. Windows использует \ (обратную косую черту, обратный слэш, слэш влево) для указания пути к каталогам, а операционные системы Linux и MacOS используют / (прямая обратная черта, слэш, правый слэш). В Python прямой слэш просто работает всегда, даже на Windows.
  3. Путь каталога не начинается с косой черты (слэша) или буквы, это называется относительным путем. Относительно чего? Имей терпение, кузнечик!
  4. Это строки. Все современные операционные системы (включая Windows) используют Unicode для хранения имён файлов и директорий. Python 3 полностью поддерживает не-ascii пути.
  5. Файл не обязательно должен находиться на локальных дисках. Вы можете использовать сетевые диски. Этот файл может быть объектом виртуальной файловой системы (/proc в linux). Если ваш компьютер считает это за файл и даёт возможность обращаться к этому как к файлу, то Python сможет открыть этот файл.

Вызов функции open() не ограничивается передачей параметра пути к файлу и его имени. Имеется ещё один параметр, называющийся encoding. О да, дорогой читатель, это звучит воистину ужасно!

11. 2. 1 Особенности кодировки показывают своё страшное лицо

Байты байт; символы абстракции. Строка представляет собой последовательность символов в кодировке Юникод. Но файлы на диске не являются последовательностью символов в кодировке Unicode, а являются последовательностью байтов. Если вы читаете текстовый файл с диска, то как Python преобразует эту последовательность байт в последовательность символов? Он декодирует байт по определенному алгоритму кодировки и возвращает последовательность символов в кодировке Unicode (т. е. в виде строки).

> > file = open('examples/chinese. txt')…> > > a_string = file. read()…Traceback (most recent call last): … File «< stdin> », line 1, in < module> … File «C: \Python31\lib\encodings\cp1252. py», line 23, in decode… return codecs. charmap_decode(input, self. errors, decoding_table)[0]…UnicodeDecodeError: 'charmap' codec can’t decode byte 0x8f in position 28: character maps to < undefined> [[Категория: Погружение в Python 3]]

XML

 

Погружение

Большинство глав в этой книге строятся на отрывках, примерах кода. Но xml это больше данные, нежели код. Один из способов применения xml это «синдикация контента» такого, как последние статьи с блога, форума или других часто обновляемых сайтов. Большинство популярного ПО для ведения блогов может создавать ленты (фиды) и обновлять их, когда новые статьи, темы публикуются. Вы можете следить за блогом подписавшись на его канал, также вы можете следить за несколькими блогами при помощи «программ-агрегаторов» таких, как Google Reader [1]

Итак, ниже представлены XML данные с которыми мы будем работать в этой главе. Это фид формата Atom syndication feed

<? xml version='1. 0' encoding='utf-8'? > < feed xmlns='http: //www. w3. org/2005/Atom' xml: lang='en'> < title> dive into mark< /title> < subtitle> currently between addictions< /subtitle> < id> tag: diveintomark. org, 2001-07-29: /< /id> < updated> 2009-03-27T21: 56: 07Z< /updated> < link rel='alternate' type='text/html' href='http: //diveintomark. org/'/> < link rel='self' type='application/atom+xml' href='http: //diveintomark. org/feed/'/> < entry> < author> < name> Mark< /name> < uri> http: //diveintomark. org/< /uri> < /author> < title> Dive into history, 2009 edition< /title> < link rel='alternate' type='text/html' href='http: //diveintomark. org/archives/2009/03/27/dive-into-history-2009-edition'/> < id> tag: diveintomark. org, 2009-03-27: /archives/20090327172042< /id> < updated> 2009-03-27T21: 56: 07Z< /updated> < published> 2009-03-27T17: 20: 42Z< /published> < category scheme='http: //diveintomark. org' term='diveintopython'/> < category scheme='http: //diveintomark. org' term='docbook'/> < category scheme='http: //diveintomark. org' term='html'/> < summary type='html'> Putting an entire chapter on one page sounds bloated, but consider this & amp; mdash; my longest chapter so far would be 75 printed pages, and it loads in under 5 seconds& amp; hellip; On dialup. < /summary> < /entry> < entry> < author> < name> Mark< /name> < uri> http: //diveintomark. org/< /uri> < /author> < title> Accessibility is a harsh mistress< /title> < link rel='alternate' type='text/html' href='http: //diveintomark. org/archives/2009/03/21/accessibility-is-a-harsh-mistress'/> < id> tag: diveintomark. org, 2009-03-21: /archives/20090321200928< /id> < updated> 2009-03-22T01: 05: 37Z< /updated> < published> 2009-03-21T20: 09: 28Z< /published> < category scheme='http: //diveintomark. org' term='accessibility'/> < summary type='html'> The accessibility orthodoxy does not permit people to question the value of features that are rarely useful and rarely used. < /summary> < /entry> < entry> < author>     < name> Mark< /name> < /author> < title> A gentle introduction to video encoding, part 1: container formats< /title> < link rel='alternate' type='text/html' href='http: //diveintomark. org/archives/2008/12/18/give-part-1-container-formats'/>   < id> tag: diveintomark. org, 2008-12-18: /archives/20081218155422< /id> < updated> 2009-01-11T19: 39: 22Z< /updated> < published> 2008-12-18T15: 54: 22Z< /published> < category scheme='http: //diveintomark. org' term='asf'/> < category scheme='http: //diveintomark. org' term='avi'/> < category scheme='http: //diveintomark. org' term='encoding'/> < category scheme='http: //diveintomark. org' term='flv'/> < category scheme='http: //diveintomark. org' term='GIVE'/> < category scheme='http: //diveintomark. org' term='mp4'/> < category scheme='http: //diveintomark. org' term='ogg'/> < category scheme='http: //diveintomark. org' term='video'/> < summary type='html'> These notes will eventually become part of a tech talk on video encoding. < /summary> < /entry> < /feed>
Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...