Файл Python хлебает

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

Что вы можете сделать, это использовать селектор CSS3: псевдо classe nth-child()

#list>* {
  display: inline-block;
  padding: 20px 28px;
  margin-right: 5px;
  border: 1px solid #bbb;
  background: #ddd;
  color: #444;
  margin: 0.4em 0;
}

#list :nth-child(-n+4) {
  color: #600b90;
  border: 1px dashed red;
  background: orange;
}

The oranges elements are the previous sibling li selected using li:nth-child(-n+4)

1

2

3

4
5

6

7

8

9

Ограничения

  • Вы не можете выбрать предыдущие элементы основанный на классах следующих элементов
  • Это то же самое для псевдо классов

42
задан Mike Caron 27 October 2009 в 16:08
поделиться

2 ответа

Это превратит содержимое в одну строку в Python 2.6 1 и выше:

with open('x.txt') as x: f = x.read()

И это создаст список строк:

with open('x.txt') as x: f = x.readlines()

Эти подходы гарантируют немедленное закрытие входного файла сразу после чтения.

Сноска:

  1. Этот подход также можно использовать в Python 2.5, используя из __future__ import with_statement .

Более старый подход, не гарантирует немедленное закрытие - это использовать это для создания единственной строки:

f = open('x.txt').read()

И это для создания списка строк:

f = open('x.txt').readlines()

На практике он будет немедленно закрыт в некоторых версиях CPython, но закрывается только когда сборщик мусора доберется до него "в Jython, IronPython и, возможно, в какой-нибудь будущей версии CPython.

98
ответ дан 26 November 2019 в 23:32
поделиться

Запуск в Python 3.5 , можно использовать pathlib модуль для более современного интерфейса. Будучи Python 3, это делает различие между чтением текста и чтением байтов:

from pathlib import Path

text_string = Path('x.txt').read_text()  # type: str

byte_string = Path('x.txt').read_bytes()  # type: bytes
0
ответ дан 26 November 2019 в 23:32
поделиться