Спасибо за фрагмент кода ... спасли меня много времени!
Мне нужно было обрабатывать пару дополнительных случаев синтаксического анализа, таких как порядковые слова («первый», «второй»), переносимые слова («сто») и дефисные порядковые слова типа «пятьдесят- седьмой "), поэтому я добавил пару строк:
def text2int(textnum, numwords={}):
if not numwords:
units = [
"zero", "one", "two", "three", "four", "five", "six", "seven", "eight",
"nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",
"sixteen", "seventeen", "eighteen", "nineteen",
]
tens = ["", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"]
scales = ["hundred", "thousand", "million", "billion", "trillion"]
numwords["and"] = (1, 0)
for idx, word in enumerate(units): numwords[word] = (1, idx)
for idx, word in enumerate(tens): numwords[word] = (1, idx * 10)
for idx, word in enumerate(scales): numwords[word] = (10 ** (idx * 3 or 2), 0)
ordinal_words = {'first':1, 'second':2, 'third':3, 'fifth':5, 'eighth':8, 'ninth':9, 'twelfth':12}
ordinal_endings = [('ieth', 'y'), ('th', '')]
textnum = textnum.replace('-', ' ')
current = result = 0
for word in textnum.split():
if word in ordinal_words:
scale, increment = (1, ordinal_words[word])
else:
for ending, replacement in ordinal_endings:
if word.endswith(ending):
word = "%s%s" % (word[:-len(ending)], replacement)
if word not in numwords:
raise Exception("Illegal word: " + word)
scale, increment = numwords[word]
current = current * scale + increment
if scale > 100:
result += current
current = 0
return result + current`
Вы могли попытаться писать в полный гибкий диск.
Редактирование:
световой сигнал In Вашего отредактированного вопроса, Вы могли настроить сетевой ресурс без квоты дискового пространства и записать в это. Ошибка будет затем произведена независимо от зарегистрированного пользователя или машины.
Загрузите и установите TrueCrypt. Можно затем создать виртуальный раздел любого размера, Вы хотите (несколько мегабайтов), монтируете его и затем заполняете его несколькими документами.
Это могло бы походить на слишком, но одна вещь, о которой я могу думать, состоит в том, чтобы использовать виртуальную машину и установить ее виртуальный диск на просто достаточно большой для установки ОС на. Заполните его некоторыми файлами мусора для добавления подсказки его по краю, затем запустите программу.
Вы могли установить маленький электронный диск и записать в это. Посмотрите эту страницу приблизительно для свободные продукты электронного диска .
Создайте вторичный раздел, заполните его спамом и затем запустите Вашу программу там.
Создайте нового пользователя accout, установите квоту для нее и используйте руны для запущения приложения как того пользователя. (не точно то же как полный диск, но должен иметь подобные последствия.)
Для Windows XP или позже:
Эта команда может получить количество свободного пространства для диска c:\:
for /f "usebackq tokens=1-5" %%A in (`dir c:\ ^| find "bytes free"`) do (
set FREE_SPACE=%%C
)
Замена c:\ с Вашим диском, по мере необходимости.
можно затем занять некоторое место далеко от этого значения, таким образом, у Вас есть немного комнаты для работы с:
set /a FREE_SPACE=FREE_SPACE-1024
или однако много пространства Вы хотите сохранить свободными.
можно использовать эти fsutil
команда для создания файла для заполнения свободного пространства на диске:
fsutil file createnew c:\spacehog.dat %FREE_SPACE%
Запущенный Ваш тест, пишущий в диск. После записи приблизительно 1 024 байтов, у необходимо закончиться пространство.
Операционная система ответит по-другому на, он - системный диск, заполняющийся, чем к другому заполнению дисков и как таковой, Ваше приложение сделает так также, конечно? Просто заполнение диска независимо от того, что используются физические среды, не будет точным тестом.
Разве Вы не можете дразнить событие файловой системы за полный диск? Почему Вы хотели бы ожидать, пока диск не полон? Разве Вы не хотели бы контролировать дисковое пространство периодически и предупреждать пользователя, когда диск с полем процента заполнения? Вместо того, чтобы ожидать до, дисковое пространство является терминальным, просто препятствуют тому, чтобы Ваше приложение работало, пока вопрос не решен, не делание так могло произвести любые данные IO и быть неисправимо!
, Если тест имеет , чтобы быть трудным интеграционным тестом, затем автоматизирующим виртуальную машину, развертывая приложение и затем заполнить остающееся пространство рекурсивным сценарием, выполнимо.
Лучшей вещью, которая работает над каждым компьютером (поскольку тестирование не обязательно сделано на выделенной машине) был бы ramdrive/ramdisk, который мог быть настроен на лету.
Только нашел Виртуальный диск, который SDK до сих пор видит здесь , который, возможно, мог быть включен в Ваш процесс buzild.
Другая идея: возможно, Ваши компьютеры тестирования могли быть настроены для записи в папку общей сети (который полон), монтируются как диск?