Однострочники
В этой главе я продемонстрирую несколько однострочных команд, которые могут быть очень полезны.

Простой веб-сервер

Когда-нибудь хотели быстро передать файл по сети? Тогда вам повезло. В Python есть такая возможность. Перейдите в директорию, которую хотите расшарить по сети, и наберите следующую команду в терминале:
1
# Python 2
2
python -m SimpleHTTPServer
3
4
# Python 3
5
python -m http.server
Copied!

Аккуратный вывод в консоль

Вы можете выводить списки и словари аккуратно отформатированными в консоль. Вот нужный код:
1
from pprint import pprint
2
3
my_dict = {'name': 'Yasoob', 'age': 'undefined', 'personality': 'awesome'}
4
print(dir(my_dict))
5
# ['__add__', '__class__', '__contains__', '__delattr__', ..., 'sort']
6
7
pprint(dir(my_dict))
8
# ['__add__',
9
# '__class__',
10
# '__contains__',
11
# '__delattr__',
12
# '__delitem__',
13
# ...
14
# 'sort']
Copied!
Это особенно удобно для вложенных словарей. Помимо этого, если вам нужно вывести содержимое JSON файла в терминал в удобочитаемом формате, то:
1
cat file.json | python -m json.tool
Copied!

Профилирование скрипта

Это может быть очень полезно для определения узких мест производительности ваших программ:
1
python -m cProfile my_script.py
Copied!
Примечание: cProfile это ускоренная реализация profile, написанная на C.

CSV в JSON

Выполните следующую команду:
1
python -c "import csv,json;print json.dumps(list(csv.reader(open('csv_file.csv'))))"
Copied!
Не забудьте заменить csv_file.csv на желаемое имя файла.

Сглаживание списка

Вы можете легко и просто сгладить список, содержащий вложенные списки с помощью itertools.chain.from_iterable из пакета itertools. Вот простой пример:
1
a_list = [[1, 2], [3, 4], [5, 6]]
2
print(list(itertools.chain.from_iterable(a_list)))
3
# Вывод: [1, 2, 3, 4, 5, 6]
4
5
# или
6
print(list(itertools.chain(*a_list)))
7
# Вывод: [1, 2, 3, 4, 5, 6]
Copied!

Однострочные конструкторы

Позволяют избежать больших кусков повторяющегося кода при инициализации класса:
1
class A(object):
2
def __init__(self, a, b, c, d, e, f):
3
self.__dict__.update({k: v for k, v in locals().items() if k != 'self'})
Copied!
Другие подобные однострочники можно найти на официальном сайте.
Last modified 3yr ago