我正在使用Python 3.2.2。用戶可以選擇在控制檯上輸入數值,或者如果他只是按ENTER鍵,則可以使用默認值。例如如果用戶點擊回車鍵,值設置到C:\ TEMP如下圖所示的代碼片段:Python 3.2.2從控制檯讀取
READ=os.read(0,100)
if READ == "\n" :
READ="c:\\temp"
該代碼使用Python 2.7版的工作,但它不會對蟒蛇3.2.2工作。
在3.2.2中,READ保持空白。 任何建議,請改善此代碼?
我正在使用Python 3.2.2。用戶可以選擇在控制檯上輸入數值,或者如果他只是按ENTER鍵,則可以使用默認值。例如如果用戶點擊回車鍵,值設置到C:\ TEMP如下圖所示的代碼片段:Python 3.2.2從控制檯讀取
READ=os.read(0,100)
if READ == "\n" :
READ="c:\\temp"
該代碼使用Python 2.7版的工作,但它不會對蟒蛇3.2.2工作。
在3.2.2中,READ保持空白。 任何建議,請改善此代碼?
函數os.read
在Python 2.7中返回class str
,但在python 3.2中返回class bytes
。所以在python 3.2中,if READ == "\n": READ="C:\\temp"
將會是從來沒有是True
。你可以改變這樣的:
if str(READ,"ascii") == os.linesep: READ = "C:\\temp"
也許更確切地說:
import os,sys
READ = os.read(0,100)
if str(READ,sys.stdin.encoding) == os.linesep:
READ = "C:\\temp"
Python 3中取得,所以os.read()
回報二進制字符串。
代碼應該是固定
if READ == b'\n' :
READ="c:\\temp"
可能有助於知道爲什麼它不工作... – CharlesB
爲什麼'os.read(0,100)',而不僅僅是'輸入()'? –
在這種情況下,你應該有能力解決這個問題。首先,打印(repr(READ))'。 –