У меня есть очень простой скрипт, который создает файл, как большой, как пользователь хочет:Py2Exe потерял ошибку sys.stdin?
from uuid import uuid4
global ammount
ammount = None
def randbyte():
l = []
a = uuid4().hex
for char in a:
l.append(str(char))
return l[6]
def randkb():
a = ''
for num in range(0, 32):
a = a + uuid4().hex
return a
def randmb():
a = ''
for num in range(0, 32):
a = a + randkb()
return a
exit = False
print('##### DATA DUMP v1 #####')
while exit == False:
ammount = input('AMMOUNT OF DATA TO DUMP IN BYTES >> ')
try:
ammount = int(arg)
print('DUMPING...')
b = int(ammount % 32)
a = int(ammount - b)
c = int(a/32)
with open('dump.txt', 'w') as file:
for num in range(0, c):
print('KB')
a = uuid4().hex
file.write(a)
for num in range(0, b):
print('B')
a = randbyte()
file.write(a)
print('COMPLETED')
except ValueError:
print('ARGUMENT MUST BE AN INTEGER')
Это прекрасно работает, когда я запускаю его через переводчика. Однако, когда я положил его через py2exe, я всегда получаю следующее сообщение об ошибке:
Traceback (most recent call last):
File "d.py", line 31, in <module>
RuntimeError: input(): lost sys.stdin
Мой setup.py это:
from distutils.core import setup
import py2exe
setup(
options = {"py2exe": {'bundle_files': 2, 'compressed': True}},
windows = [{'script': "d.py"}],
zipfile = None,
)
Я искал какое-то время, но не смогли найти какие-либо решения, применяются в данном конкретном случае. Я что-то пропустил? Любые идеи о том, как заставить его работать?
Не уверен, что вы понимаете, но 'randmb()' генерирует только 32KiB, а не 1MiB. – mhawke
@mhawke Это действительно не помогает –
Извините за бесполезность. Тем не менее, это проблема в коде, о которой вы, возможно, не знали, и поэтому она размещена как комментарий, а не ответ. – mhawke