Вы можете использовать Object.keys
для получения ключей перечисления и записи значений, например:
enum Sizes {
Tiny = "Tiny",
VerySmall = "Very Small",
Small = "Small",
Medium = "Medium",
Large = "Large",
VeryLarge = "Very Large"
}
for (const size of Object.keys(Sizes)) {
console.log(Sizes[size]);
}
Вывод:
Tiny
Very Small
Small
Medium
Large
Very Large
Прозрачный пример:
[119 ]var Sizes;
(function (Sizes) {
Sizes["Tiny"] = "Tiny";
Sizes["VerySmall"] = "Very Small";
Sizes["Small"] = "Small";
Sizes["Medium"] = "Medium";
Sizes["Large"] = "Large";
Sizes["VeryLarge"] = "Very Large";
})(Sizes || (Sizes = {}));
for (var _i = 0, _a = Object.keys(Sizes); _i < _a.length; _i++) {
var size = _a[_i];
console.log(Sizes[size]);
}
Я протестировал это на своей машине Windows, и она работает при определении Python exe:
C:\>C:\Python25\python.exe output.py | C:\Python25\python.exe input.py
Give me the greeting. The greeting is: hello
Но я получаю EOFError также при выполнении команд непосредственно как:
output.py | input.py
Я не уверен точно, почему то есть, я все еще изучаю этого, но по крайней мере это должно предоставить Вам обходное решение на данный момент. Это может иметь некоторое отношение к способу, которым обработчик файлов вызывается для .py файлов.
ОБНОВЛЕНИЕ: хорошо, что Вы знаете. Похож это - на самом деле ошибка в Windows, где stdin/stdout перенаправление не может работать правильно при запуске с ассоциации файлов. Таким образом, обходное решение как отмечено один и Patrick, необходимо указать, что "Python" будет выполнять input.py, иначе это не перенаправит stdout от output.py до stdin для input.py правильно.
Ссылка:
http://mail.python.org/pipermail/python-bugs-list/2004-August/024923.html
http://support.microsoft.com/default.aspx?kbid=321788
ОБНОВЛЕНИЕ 2:
Изменить это поведение и сделать Windows передают работу по каналу как ожидалось для stdin/stdout перенаправления, можно добавить это значение к реестру (протестированный на моем поле, и проверил, что это работает, как желаемый).
- Запустите редактор реестра.
Найдите и затем нажмите следующий ключ в реестре:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
В меню Edit нажмите Add Value и затем добавьте следующее значение реестра:
Имя значения: InheritConsoleHandles
Тип данных: REG_DWORD
Основание: десятичное число
Данные значения: 1Редактор реестра выхода.
Измените его на:
Output.py | python Input.py
Вывод будет:
Дайте мне приветствие. Приветствие:здравствуйте!
Вот то, почему Вы получаете EOFError (из документации относительно raw_input):
Функция затем читает строку из входа, преобразовывает его в строку (разделяющий запаздывающую новую строку), и возвраты это. Когда EOF читается, EOFError повышен.
http://docs.python.org/library/functions.html?highlight=raw_input#raw_input
Можно хотеть использовать sys.stdin, он обеспечивает объект файла, от которого можно использовать чтение, readlines методы.
import sys
for greeting_line in sys.stdin.readlines():
print "The greeting is:", greeting_line.strip()