我遇到了一個問題,python沒有爲代碼中的輸入調用輸入輸入。它只是跳過輸入並將一個空字符串放入變量源中,這會導致程序在嘗試打開名稱爲source(空字符串)的文件時失敗。Python3跳過第一個輸入調用並繼續輸入第二個輸入
什麼可能導致它跳過一行輸入?
我有這段代碼,我寫了只是幾行要求用戶輸入的代碼。
def main():
source = input('please enter source file name: ')
file_name = input('please enter file name you want script to be saved as: ')
language = input('please enter language to generate script in: ')
args = input('please enter comma delimited list of attributes from source file (if any): ')
print('\nGenerating script...\n')
generate_script(source,file_name,args,language)
return
當我運行它正常工作程序和產出
please enter source file name: Tree.txt
please enter file name you want script to be saved as: t
please enter language to generate script in: matlab
please enter comma delimited list of attributes from source file (if any):
Generating script...
Generation successful
當我把這個代碼給別人,他們跑了它自己的計算機出現此錯誤的
please enter source file name: /* SHOULD TAKE USER INPUT HERE BUT IMMEDIATELY PRINTS NEXT INPUT LINE INSTEAD */ please enter file name you want script to be saved as: 'C:\Users\pmade\Desktop\DecisionTreeGenerator-master\DecisionTreeGenerator-master\T.txt'
please enter language to generate script in: 'matlab'
please enter comma delimited list of attributes from source file (if any): 'PCI0, FREEZE_THAW_YR'
Generating script...
File "<stdin>", line 1, in <module>
File "C:\Program Files\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 866, in runfile
execfile(filename, namespace)
File "C:\Program Files\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/pmade/Desktop/DecisionTreeGenerator-master/DecisionTreeGenerator-master/Text2Code.py", line 162, in <module>
main()
File "C:/Users/pmade/Desktop/DecisionTreeGenerator-master/DecisionTreeGenerator-master/Text2Code.py", line 9, in main
generate_script(source,file_name,args,language)
File "C:/Users/pmade/Desktop/DecisionTreeGenerator-master/DecisionTreeGenerator-master/Text2Code.py", line 32, in generate_script
with io.open(source,'r') as f_r:
FileNotFoundError: [Errno 2] No such file or directory: "runfile('C:/Users/pmade/Desktop/DecisionTreeGenerator-master/DecisionTreeGenerator-master/Text2Code.py', wdir='C:/Users/pmade/Desktop/DecisionTreeGenerator-master/DecisionTreeGenerator-master')"
>>> Traceback (most recent call last):
似乎就像解釋器在main中打印第一個輸入調用的消息一樣,然後在等待輸入之前直接進入第二個輸入調用,導致它抱怨稱爲「」的文件沒有t存在於當前目錄中。任何人都知道發生了什麼事?
編輯:抱歉忘了解釋正確,函數generate_script使用從跳過的輸入中取得的字符串打開源文件讀取。 下面是代碼:
def generate_script(source,file_name,args='',language='python'):
with io.open(source,'r') as f_r:
do work with file f_r....
與錯誤,解釋跳過進行輸入,將正常投入源變量引起的IO嘗試打開一個名爲「」文件來源是空白,這導致了以上錯誤。
這是文件路徑的錯誤,因爲你得到了'FileNotFoundError' – Ding