我有一个非常简单的脚本,可以创建一个与用户想要的一样大的文件:
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,
)
我搜索了一段时间但找不到适用于这种特殊情况的任何解决方案。我错过了什么?关于如何使其发挥作用的任何想法?
答案 0 :(得分:2)
您正在创建一个没有标准输入的Windows GUI应用程序。您可能想要一个具有stdin的控制台应用程序,因此您需要相应地进行设置。尝试将windows
替换为console
:
from distutils.core import setup
import py2exe
setup(
options = {"py2exe": {'bundle_files': 2, 'compressed': True}},
console = ["d.py"],
zipfile = None,
)
或者可能是console=[{'script': 'd.py'}],
- 我不确定它有什么不同。