Примечание. Следующая статья поможет вам: Как работать с файлами в Python
В любом языке программирования обработка файлов является важным аспектом. Кроме того, Python поддерживает работу с файлами в различных режимах, таких как чтение и запись в файлы и т. д.
К концу этого урока вы сможете:
Как прочитать файл в Python
Чтобы открыть файл в Python, вы можете использовать общий синтаксис: open(‘file_name’,’mode’).
Примечание: Если файл, который вы хотите открыть, находится в текущем рабочем каталоге, вы можете указать только имя файла. Если он находится в другой папке в вашей рабочей среде, вы должны указать путь к файлу.
Режим по умолчанию для открытия файла читать— обозначается буквой «р». Однако рекомендуется указывать режим явно.
Прежде чем мы начнем, давайте взглянем на файл lib.txt, который мы будем использовать в этом примере.
📁 Загрузите текстовый файл и код, используемые в этом руководстве, из этого репозитория GitHub.
Фрагмент кода ниже показывает, как вы можете открыть текстовый файл «lib.txt» в Python с помощью функции open() и прочитать его содержимое.
file = open(‘lib.txt’,’r’)contents = file.read() print(contents) file.close() # Вывод Здравствуйте! Вот несколько полезных библиотек Python: 1) NumPy 2) pandas 3) matplotlib 4) seaborn 5) scikit-learn 6) BeautifulSoup 7) Scrapy 8) nltk 9) Bokeh 10) statsmodels
В приведенном выше примере
Однако, если вы забудете закрыть файл, возможна трата ресурсов. Если вы работаете с большим количеством таких файлов, это может привести к значительному использованию памяти. Это потому, что вы открыли несколько файлов, но не закрыли ни один из них.
Теперь давайте узнаем, как лучше открывать файлы с помощью контекстных менеджеров. Фрагмент кода ниже показывает, как вы можете их использовать.
с open(‘lib.txt’,’r’) как f:contents = f.read() print(contents)
При использовании менеджеров контактов для работы с файлами вам не нужно использовать метод close(). Файлы автоматически закрываются после завершения операции ввода-вывода.
Как читать строки из файла в Python
В нашем примере текстового файла у нас было всего несколько строк. Таким образом, чтение всего содержимого файла одновременно не было проблемой.
Однако, когда вам нужно читать большие файлы, использование метода read(), как показано выше, может быть не очень эффективным.
На самом деле, если текстовый файл имеет очень большой размер, вам может скоро не хватить памяти. Вот почему вы можете захотеть прочитать строки из текстового файла только для чтения, и в этом разделе вы узнаете, как это сделать.
Использование метода Python readline() для чтения строк из файла
Метод readline() считывает из файла по одной строке за раз.
Запустите следующий фрагмент кода.
with open(‘lib.txt’,’r’) as f: line = f.readline() print(line) line = f.readline() print(line) # Вывод Привет! Вот несколько полезных библиотек Python:
Вы можете видеть, что после первого вызова метода readline() выводится первая строка файла. И второй вызов метода readline() возвращает вторую строку в файле.
Это связано с тем, что после вызова первого метода указатель файла находится в начале второй строки.
В Python вы можете использовать метод tell(), чтобы получить текущее местоположение указателя файла. А чтобы переместить указатель файла в определенное место, вы можете использовать метод seek().
В приведенном ниже фрагменте кода мы используем f.seek(0) после первого вызова метода. Это перемещает указатель файла в начало текстового файла. Вот почему в обоих случаях выводится первая строка файла.
with open(‘lib.txt’,’r’) as f: line = f.readline() print(line) f.seek(0) line = f.readline() print(line) # Выходные данные Привет! Привет!
Использование метода Python readlines() для чтения строк из файла
Есть еще один близкородственный метод, который называется readlines().
Когда вы запустите следующий фрагмент кода, вы увидите, что метод readlines() возвращает список всех строк в файле.
с open(‘lib.txt’,’r’) as f: lines = f.readlines() print(lines) # Вывод
[‘Hello, there!\n’, ‘Here are a few helpful Python libraries:\n’,
‘1) NumPy\n’, ‘2) pandas\n’, ‘3) matplotlib\n’,
‘4) seaborn\n’, ‘5) scikit-learn\n’, ‘6) BeautifulSoup\n’,
‘7) Scrapy\n’, ‘8) nltk\n’, ‘9) Bokeh\n’, ’10) statsmodels\n’, ‘\n’]
Использование цикла Python for для чтения строк из файла
Чтобы прочитать строки из текстового файла, вы также можете использовать цикл for.
Когда у вас есть файловый объект, вы можете использовать цикл for для перебора содержимого файла — по одной строке за раз и вывода их на печать, как показано ниже. Обратите внимание, что мы обращаемся только к одной строке за раз, а не считываем содержимое всего файла.
с open(‘lib.txt’,’r’) как f: для строки в f: print(line, end=”)
Примечание: при использовании функции Python print() разделителем по умолчанию является символ новой строки — символ ‘\n’. Но в исходном файле у нас нет этих новых строк. Поэтому задайте в качестве аргумента-разделителя пустую строку: end = ”, чтобы напечатать содержимое файла как есть.
Как читать фрагменты содержимого из файла в Python
В Python вы также можете выбрать чтение содержимого файла небольшими порциями.
Прочитайте код ниже:
chunk_size = 50 с open(‘lib.txt’,’r’) as f: chunk = f.read(chunk_size) print(chunk) current = f.tell() print(f”Текущая позиция указателя файла: {current }”) # Выходные данные Привет! Вот несколько полезных библиотек Python Текущая позиция указателя файла: 51
Вы также можете использовать эту технику для чтения всего файла небольшими фрагментами.
В следующем фрагменте кода показано, как это можно сделать.
chunk_size = 50 с open(‘lib.txt’,’r’) as f: chunk = f.read(chunk_size) print(chunk,end=”) while(len(chunk)>0): chunk = f. read(chunk_size) print(chunk,end=”) # Выходные данные Привет! Вот несколько полезных библиотек Python: 1) NumPy 2) pandas 3) matplotlib 4) seaborn 5) scikit-learn 6) BeautifulSoup 7) Scrapy 8) nltk 9) Bokeh 10) statsmodels
Здесь мы используем цикл while для чтения содержимого файла. Мы читаем содержимое файла порциями размером 50, пока не достигнем конца файла. ✅
Как записать в файл в Python
Чтобы записать текстовый файл в Python, вы должны открыть его в режиме записи, указав ‘w’.
Фрагмент кода ниже показывает, как это сделать.
с open(‘new_file.txt’,’w’) as f: f.write(‘Привет, Python!’)
Вы увидите, что «new_file.txt» был создан в вашем рабочем каталоге.
Теперь запустите приведенную выше ячейку кода еще раз.
В вашем терминале выполните следующую команду:
cat new_file.txt # Вывод: Привет, Python!
В идеале мы записали в файл дважды. Итак, привет, Питон! надо было печатать дважды, да?
Но вы увидите, что он был напечатан только один раз. Ну, это потому, что когда вы открываете файл в записывать (w) режим, вы в основном содержимое файла с новым содержимым.
Если вы хотите дойти до конца файла, не перезаписывая существующее содержимое, вам следует открыть файл в добавить режим. И вы увидите, как это сделать в следующем разделе.
Как добавить файл в Python
Если вы хотите добавить содержимое в файл без перезаписи, откройте его в добавить режим.
Для этого используйте `’a’—а за добавить— и указать режим явно.
Затем дважды запустите следующую ячейку кода.
с open(‘new_file.txt’,’a’) as f: f.write(‘Привет, Python!’)
Обратите внимание, что текст теперь печатается дважды, поскольку мы добавили его в файл.
cat new_file.txt # Вывод: Привет, Python! Привет, Python!
Вывод
Давайте быстро суммируем то, что мы прошли в этом уроке.
Я надеюсь, что вы нашли этот урок полезным. Теперь, когда вы научились работать с текстовыми файлами в Python, узнайте, как работать с файлами JSON в Python.
Связанный:
Проверьте длину списка в Python за 3 шага.