«Дев'ять миль ходьби це не жарт, особливо під час дощу.» -Harry Kemelman, The Nine Mile Walk
На моєму Windows ноутбуці було 38493 файлу, перш ніж я встановив один додаток. Установка Python 3 додала майже 3000 файлів до загального обсягу. Файли являють собою первинну парадигму зберігання інформації в основних операційних системах; ця концепція настільки вкоренилася, що більшість людей не сприймуть щось інше альтернативне. Образно кажучи, Ваш комп'ютер тоне в морі файлів.
11.2 Читання з текстових файлів
a_file = open ( 'examples / chinese.txt', encoding = 'utf-8')
Python має вбудовану функцію open (), якою передається ім'я файлу в якості аргументу. У прикладі ім'я файлу 'examples / chinese.txt' і в ньому є 5 цікавих речей:
- Це не просто ім'я файлу, це комбінація шляху до каталогу і ім'я файлу. Гіпотетично, в функцію відкриття файлу можна було б передати два параметри: шлях до файлу та ім'я файлу, але в функцію open () можна передати лише один. В Python, коли це необхідно ви можете включати всі або деякі шляхи до каталогу.
- При вказівці шляху до каталогу використовується / (пряма зворотна риса, слеш, правий слеш), що не обговорюючи яка операційна система використовується. Windows використовує \ (зворотну косу риску, зворотний слеш, слеш вліво) для вказівки шляху до каталогів, а операційні системи Linux і MacOS використовують / (пряма зворотна риса, слеш, правий слеш). В Python прямий слеш просто працює завжди, навіть на Windows.
- Шлях тека не починається з косою риси (слеша) або літери, це називається відносним шляхом. Щодо чого? Май терпіння, коник!
- Це рядки. Всі сучасні операційні системи (включаючи Windows) використовують Unicode для зберігання імен файлів і директорій. Python 3 повністю підтримують не-ascii шляху.
- Файл не обов'язково повинен знаходитися на локальних дисках. Ви можете використовувати мережеві диски. Цей файл може бути об'єктом віртуальної файлової системи (/ proc в linux). Якщо ваш комп'ютер вважає це за файл і дає можливість звертатися до цього як до файлу, то Python зможе відкрити цей файл.
Виклик функції open () не обмежується передачею параметра шляху до файлу і його ім'я. Є ще один параметр, який називається encoding. О так, дорогий читачу, це звучить воістину жахливо!
11.2.1 Особливості кодування показують своє страшне обличчя
Байти байт; символи абстракції. Рядок являє собою послідовність символів в кодуванні Юнікод. Але файли на диску не є послідовністю символів в кодуванні Unicode, а є послідовністю байтів. Якщо ви читаєте текстовий файл з диска, то як Python перетворює цю послідовність байт в послідовність символів? Він декодує байт за певним алгоритмом кодування і повертає послідовність символів в кодуванні Unicode (т. Е. У вигляді рядка).