python def,打印返回值

时间:2014-04-29 07:34:52

标签: python return function

我正在尝试获取在文本文件中逐行写入的文件名。我尝试使用以下代码为名为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)

3 个答案:

答案 0 :(得分:2)

您需要使用return的值做某事,例如:

test, filenames = read("testing.txt")
print(test)
print(filenames)

Python中的名称只是对象的引用;返回testfilenames会将对象的名称引用传递回调用函数,但不会表示相同的名称将自动可用。事实上,你可以在调用函数中将它们命名为完全不同的东西,并且一切仍然可以工作:

foo, bar = read("testing.txt")
print(foo)
print(bar)

答案 1 :(得分:0)

testfilenames仅在您的功能中可用。所以你需要调用函数并将值赋给函数外部的变量然后使用它们,或者你可以将它们声明为全局变量,在这种情况下你不需要返回它们。

所以,你可以这样做:

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

答案 2 :(得分:0)

您收到该错误" C:\ xampp \ htdocs \ test.new \ multiUploadTest \ var.txt"," r +" - 因为双\ _所以无法读取文件。

此错误与它与文件位置有关的代码无关,进行测试,将文件复制到与代码相同的文件夹中,然后将open()指向该文件夹,或者只是删除\并使用单个\