python def,打印返回值
我正在尝试获取在文本文件中逐行写入的文件名。我尝试使用以下代码为名为filenames的变量中的每一行返回一个名称。当我试图打印filenames变量以确保它已被正确检索时,会出现一个错误,说明(filenames)未定义。我还制作了一个测试变量来检查它是否只是没有正确地读取行,但同样的错误也会发生。有什么想法吗python def,打印返回值,python,return,function,Python,Return,Function,我正在尝试获取在文本文件中逐行写入的文件名。我尝试使用以下代码为名为filenames的变量中的每一行返回一个名称。当我试图打印filenames变量以确保它已被正确检索时,会出现一个错误,说明(filenames)未定义。我还制作了一个测试变量来检查它是否只是没有正确地读取行,但同样的错误也会发生。有什么想法吗 def read(textFile): filenames = [] test = "test" with open ("C:\\xampp\\htdocs\\
def read(textFile):
filenames = []
test = "test"
with open ("C:\\xampp\\htdocs\\test.new\\multiUploadTest\\var.txt", "r+") as myfile:
for line in myfile:
filenames.append(line)
print test
print (filenames)
return (filenames, test)
print (test)
print (filenames)
您需要对返回的值执行一些操作,例如:
test, filenames = read("testing.txt")
print(test)
print(filenames)
Python中的名称只是对对象的引用;返回test
和filenames
会将这些名称引用的对象传递回调用函数,但并不意味着相同的名称将自动可用。事实上,您可以在调用函数中将它们命名为完全不同的名称,并且所有内容仍然可以工作:
foo, bar = read("testing.txt")
print(foo)
print(bar)
test
和filename
仅在函数内部可用。因此,您需要调用函数并将值赋给函数外部的变量,然后使用它们,或者可以将它们声明为全局变量,在这种情况下,您不需要返回它们
所以,你可以这样做:
def read(textFile):
filenames = []
test = "test"
with open ("C:\\xampp\\htdocs\\test.new\\multiUploadTest\\var.txt", "r+") as myfile:
for line in myfile:
filenames.append(line)
print test
print (filenames)
return (filenames, test)
filenames, test = read(your_filename)
print filenames, test
或者您可以选择以下选项:
def read(textFile):
global filenames, test
filenames = []
test = "test"
with open ("C:\\xampp\\htdocs\\test.new\\multiUploadTest\\var.txt", "r+") as myfile:
for line in myfile:
filenames.append(line)
print test
print (filenames)
read(your_filename)
print filenames, test
由于双重原因,您将收到错误“C:\xampp\htdocs\test.new\multiUploadTest\var.txt”、“r+”——因此无法读取文件
此错误与代码无关它与文件位置有关,执行测试,将文件复制到与代码相同的文件夹中,然后用open()将文件指向该文件夹,或者只需删除\并使用单个\测试
和文件名
是仅在方法范围内可用的变量,因为它们是在其中声明的,好吧,那么如果我在方法之前将它们声明为全局变量,它们会起作用吗?我仍然有点困惑,因为我在方法结束前也尝试过打印它们,没有错误,但是没有打印。是的,但是@jornsharpe他的方式更好solution@hoos93您可以使用global
,然后甚至不需要返回
,但是保留显式的参数和输出是一个更好的主意;它使代码更易于开发和测试,并且意味着您可以在其他地方轻松地重用该函数。这是您的完整代码吗?因为如果是这样的话,您实际上没有在任何地方调用read
,这可以解释为什么函数中的print
没有打印任何内容。另外,read
的textFile
参数从未使用过。对不起,我不明白,如果我将它们声明为全局的,那么它们可以在函数外部访问,我不需要正确地返回它们。但是我尝试了一下,没有得到任何错误。这里是我尝试的链接。抱歉,没有意识到您在函数中定义了它们-忽略我!