Существует ли Python, эквивалентный 'жемчугу - пи-e'?

Вам нужно обновить пользовательский интерфейс, поэтому используйте

Dispatcher.BeginInvoke(new Action(() => {GetGridData(null, 0)})); 
16
задан Leon Timmermans 15 December 2008 в 02:28
поделиться

7 ответов

Использование командной строки от'python -h'конечно, убедительно предполагает, что нет такого эквивалента. Perl имеет тенденцию делать широкое применение'$_'(Ваши примеры делают неявное использование из него), и я не думаю, что Python поддерживает любое подобное понятие, таким образом, делая эквиваленты Python острот Perl намного тяжелее.

10
ответ дан 30 November 2019 в 16:42
поделиться

Python для маглов. Если вам нужна магия, то вам следует использовать Perl!

29
ответ дан 22 October 2019 в 06:21
поделиться

Эквивалент - пи не то, что трудно записать в Python.

  1. Запись самостоятельно удобный модуль с-p и-i функциями Вам действительно нравится. Давайте назовем его pypi.py.

  2. Использование python -c 'import pypi; pypi.subs("this","that")'

можно реализовать основной-p цикл с модуль fileinput .

у Вас была бы функция, subs, который реализует существенный "-i" алгоритм открытия файла, сохранения резервной копии и выполнения замены на каждой строке.

существуют некоторые activestate рецепты как это. Вот некоторые:

Не встроенный. Но не трудный записать. И когда-то записанный легкий настроить.

10
ответ дан 30 November 2019 в 16:42
поделиться

Я знаю, что это на пару лет позже, но я недавно нашел очень хороший инструмент под названием pyp , который делает именно то, что вы просили.

Я думаю, что ваша команда должна быть:

pyp "p.replace('foo','bar')"
9
ответ дан 30 November 2019 в 16:42
поделиться

Я думаю, что жемчуг лучше подходит для этого отчасти на лету сценарии. Если Вы хотите быстрый на лету одноразовая поддержка сценариев, я рекомендую придерживаться жемчуга, awk, sed, и стандартных инструментов командной строки Unix.

, Но если Ваше заинтересованное использованием Python, я использую optparse, чтобы записать мои собственные инструменты командной строки и рекомендовать его. optparse предоставляет чистому и простому в использовании синтаксическому анализатору параметра командной строки созданный в поколении справки.

Вот образец:

def myfunc(filename, use_versbose):
   # function code

if __name__ == '__main__':
    from optparse import OptionParser

    parser = OptionParser()
    parser.add_option("-f", "--file", dest="filename",
                      help="write report to FILE", metavar="FILE")
    parser.add_option("-q", "--quiet",
                      action="store_false", dest="verbose", default=True,
                      help="don't print status messages to stdout")

    (options, args) = parser.parse_args()

    if options.filename:
        myfunc(options.filename, options.verbose)

    else:
        print 'ERROR -- Necessary command line options not given!'
        print parser.print_help()

синтаксический анализатор print_help () генерирует следующий вывод и автоматически отображен, когда-h или - справка дан в командной строке:

usage: <yourscript> [options]

options:
  -h, --help            show this help message and exit
  -f FILE, --file=FILE  write report to FILE
  -q, --quiet           don't print status messages to stdout
6
ответ дан 30 November 2019 в 16:42
поделиться

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

python -c 'import fileinput, sys; for line in fileinput.input(inplace=True): sys.stdout.write(line, "foo", "bar")'

Лично я обычно использую Perl, когда мне нужно сделать что-то подобное. Это один из немногих случаев, когда я использую Perl.

2
ответ дан 30 November 2019 в 16:42
поделиться

Вышесказанное может работать для стандартного ввода, но не похоже, что оно будет работать для файла.

Может быть что-то вроде:

-

import fileinput 
import sys
for line in fileinput.input("./poop", inplace=True):
    line = line.replace("foo", "bar")
    sys.stdout.write(line)

- где «./poop» можно заменить тем, где находится ваш файл, а line.replace должен поддерживать такие вещи, как line. заменить ( "{}". формат (variablehere), "newtext")

0
ответ дан 30 November 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: