Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python def,打印返回值_Python_Return_Function - Fatal编程技术网

python def,打印返回值

python def,打印返回值,python,return,function,Python,Return,Function,我正在尝试获取在文本文件中逐行写入的文件名。我尝试使用以下代码为名为filenames的变量中的每一行返回一个名称。当我试图打印filenames变量以确保它已被正确检索时,会出现一个错误,说明(filenames)未定义。我还制作了一个测试变量来检查它是否只是没有正确地读取行,但同样的错误也会发生。有什么想法吗 def read(textFile): filenames = [] test = "test" with open ("C:\\xampp\\htdocs\\

我正在尝试获取在文本文件中逐行写入的文件名。我尝试使用以下代码为名为filenames的变量中的每一行返回一个名称。当我试图打印filenames变量以确保它已被正确检索时,会出现一个错误,说明(filenames)未定义。我还制作了一个测试变量来检查它是否只是没有正确地读取行,但同样的错误也会发生。有什么想法吗

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
参数从未使用过。对不起,我不明白,如果我将它们声明为全局的,那么它们可以在函数外部访问,我不需要正确地返回它们。但是我尝试了一下,没有得到任何错误。这里是我尝试的链接。抱歉,没有意识到您在函数中定义了它们-忽略我!