以下代码用于函数:
def print_query(x):
h = open('/home/rv/data.txt', 'r')
read = h.readlines()
for line in read:
return line
当重新调整值“line”时,它应该打印,但我得到值“None”
答案 0 :(得分:8)
试试这个:
with open('/home/rv/data.txt','r') as fh:
for line in fh:
print line
如果您使用的是Python 2.5,则可能需要from __future__ import with_statement
。
另外:为什么return
为什么要print
呢?
答案 1 :(得分:2)
您没有检查“read”变量是否实际包含任何行 - 如果没有,则该函数将通过for循环并返回None。
使用for循环也很愚蠢 - 为什么你会读取所有行,并且只返回第一行,特别是在for循环中?无法打开文件时会发生什么?
答案 2 :(得分:1)
我不确定你为什么要在函数中使用循环,因为它无论如何都会在第一次迭代后返回。你到底想要完成什么?除了简单的实现问题之外,这里似乎存在更深层次的概念问题。
答案 3 :(得分:0)
当你写作时:
def f:
return 1
return 2
该函数返回1.
如果你想返回几个值,你可以在列表中返回它:
def f:
ans = []
ans.append(1)
ans.append(2)
return ans
另一种选择是使用“收益率”。当你准备好它时谷歌它
答案 4 :(得分:0)
该函数的另一个问题是你正在迭代错误的对象比你需要的更冗长。要迭代文件中的行,只需执行以下操作:
for line in open(file, "r"):
print line