Python3跳过第一个输入调用并继续输入第二个输入

问题描述:

我遇到了一个问题,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

错误消息的最后一行几乎说明了一切:在功能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')"

错误。

它看起来像错误发生在第7行,你称为“generate_script”。根据所做的工作以及可能调用的模块,其他人可能没有安装这些模块,或者没有正确调用它们。