使用cx_freeze创建的exe无法正常工作

时间:2012-01-19 23:45:53

标签: python python-3.x cx-freeze

 use=input('what do you wanna do \n1.press w to create a new file\n2.press r to read a       file:\n')

 if use=='r':
    read()
 elif use=='w':
    write()
 else :
    print('OOPS! you enter a wrong input\n')
    user() 

当我使用IDLE运行此代码时它运行正常但是当我使用cx_freeze创建此python文件的exe时,if和elif条件分别不适用于'r'和'w'。对于任何输入,它总是转到else语句。

我正在使用python 3.2和cx_freeze 3.2

1 个答案:

答案 0 :(得分:2)

只是为了快速测试,我这样做了:

use = input("test input here: ")

for i in use:
    print(ord(i))

结果,如果你键入" hello",是hello的ascii字符代码,再加上" 13"。这是返回字符\r,它将被添加到您的字符串中。这在Linux下并不会发生,并且是因为Windows上的换行符为\r\n,而不是\n

您的解决方法是执行以下操作:

use = input("test input: ").strip("\r")

strip()是一个字符串对象方法,它会从字符串的结尾处开始删除字符。

注意:

  1. 在上面的示例中使用ord()可能不是最佳做法 - 请参阅Unicode。
  2. 如果您曾经编写过GUI并使用cx_freeze,请不要使用print()input() - 在Windows上,标准输入/输出句柄根本不存在GUI应用程序。用cx_freeze + gui代码把我绊倒了一会儿。当你到达那里时,请注意。
相关问题