Python 将输入函数作为变量传递

Python 将输入函数作为变量传递,python,input,Python,Input,我想创建要在终端中运行的python脚本。我想我可以使用raw\u input为用户添加他们自己选择的文件,而不是用户在脚本中将文件名设置为variable、保存然后运行。然后程序读入文件,拼接值,进行计算并结束 因此,我编写了一个可以处理异常的函数: def function(): inputFile = raw_input('Type in file name: ') if inputFile.endswith((".txt")): return Tr

我想创建要在终端中运行的python脚本。我想我可以使用
raw\u input
为用户添加他们自己选择的文件,而不是用户在脚本中将文件名设置为variable、保存然后运行。然后程序读入文件,拼接值,进行计算并结束

因此,我编写了一个可以处理异常的函数:

 def function():
     inputFile = raw_input('Type in file name: ')
     if inputFile.endswith((".txt")):
         return True
     else:
         raise ValueError("Extension must be .txt")
     return inputFile
然后调用函数

 function()
这将提示用户向我提供文件

 filename = function()
导致
名称错误:未定义名称“inputFile”


现在,我想自动使用我为上面的
inputFile
输入的内容。但是,如果在代码中使用此变量,它将无法识别该值。我认为现在,
inputFile
是一个已定义的变量,对吗?

很难说,因为您一直给我们提供的代码要么引发完全不相关的异常,要么工作没有问题

但我想我能猜出你到底想要什么

在实际代码中,您可以执行以下操作:

def function():
     inputFile = raw_input('Type in file name: ')
     if inputFile.endswith((".txt")):
         return inputFile
     else:
         raise ValueError("Extension must be .txt")
     return inputFile

filename = function()

print inputFile
def check_input_file():
    input_file = raw_input('Please enter a filename: ')
    if input_file.endwith('.txt'):
        return input_file
    else:
        print('File name should end in .txt')
        return check_input_file()

filename = check_input_file()
这是最后一行,在你的许多编辑中,你从未向我们展示过,它引发了这个例外:

Traceback (most recent call last):
  File "if.py", line 11, in <module>
    print inputFile
NameError: name 'inputFile' is not defined
……为此:

print filename


局部变量包含在本教程的一个较弱部分中。(如果你是一个习惯于编写编译器和解释器的C程序员,那么这一部分是一个很好的指南;如果你是一个新手,就不那么好了……)但是维基百科上的文章很好地解释了这个基本思想。

我发现你的函数有一个基本问题。我假设您正在查找文本文件(以
.txt
结尾的文件),但是一旦找到一个,您就永远不会从函数返回文件名;您只需返回
True

您需要修改函数,如下所示:

def function():
     inputFile = raw_input('Type in file name: ')
     if inputFile.endswith((".txt")):
         return inputFile
     else:
         raise ValueError("Extension must be .txt")
     return inputFile

filename = function()

print inputFile
def check_input_file():
    input_file = raw_input('Please enter a filename: ')
    if input_file.endwith('.txt'):
        return input_file
    else:
        print('File name should end in .txt')
        return check_input_file()

filename = check_input_file()

“它不承认价值”是什么意思?当您运行此命令并键入内容时,实际会发生什么?实际上,发生的是一个
IndentationError
。如果您解决了这个问题,可能会出现一个异常,告诉您没有像
exception
这样的变量。请给我们一个答案;如果您给我们的代码甚至无法到达问题发生的点,那么没有人可以调试它。另外,为什么要标记此
类型
异常处理
?仅仅随机添加不相关的标签不会吸引更多能提供帮助的人,它会吸引那些读了你的问题,意识到这与他们的专业领域无关的人,投反对票,然后离开。我不相信
filename=inputFile
会引发
TypeError
。再次向我们展示将运行并实际生成您所说的异常的实际代码。给我们一些没有说明问题的代码,但确实有一系列其他问题,然后在没有向我们展示的情况下模糊地描述一些其他代码,这是没有帮助的。
temp
在您编辑的帖子中没有定义。当文件以
.txt
结尾时,OP会返回
True
inputFile
永远不会返回。但是,是的,我打赌OP就是这么做的。好的推论。我想这个问题应该结束了。@dbliss:他让它在某一点上返回了
inputFile
。我回想起当它收到关于
temp
namererror
时,或者可能在那之前,当它有两个
IndentationError
s时。@abernert哈哈,这个问题是一个令人憎恶的问题。@dbliss:无论如何,我已经投票结束了,但显然没有人同意,也不想给他一个机会真正问他真正的问题,所以我想我应该直截了当地预测他真正的问题几乎肯定是什么。非常感谢你的帮助!我保证会更加努力地学习英语。