2017-06-15 127 views
0

我遇到了一個問題,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嘗試打開一個名爲「」文件來源是空白,這導致了以上錯誤。

+0

這是文件路徑的錯誤,因爲你得到了'FileNotFoundError' – Ding

回答

0

錯誤消息的最後一行幾乎說明了一切:在功能generate_script這是不是您發佈的代碼的一部分發生

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')"

錯誤。

0

它看起來像錯誤發生在第7行,你稱爲「generate_script」。根據所做的工作以及可能調用的模塊,其他人可能沒有安裝這些模塊,或者沒有正確調用它們。

相關問題