我正在尝试获取在文本文件中逐行写入的文件名。我尝试使用以下代码为名为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)
答案 0 :(得分:2)
您需要使用return
的值做某事,例如:
test, filenames = read("testing.txt")
print(test)
print(filenames)
Python中的名称只是对象的引用;返回test
和filenames
会将对象的名称引用传递回调用函数,但不会表示相同的名称将自动可用。事实上,你可以在调用函数中将它们命名为完全不同的东西,并且一切仍然可以工作:
foo, bar = read("testing.txt")
print(foo)
print(bar)
答案 1 :(得分:0)
test
和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)
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()指向该文件夹,或者只是删除\并使用单个\