我正在使用
在http网站上迭代一个.dat文件 global $wpdb;
$results = $wpdb->get_results( "SELECT ID, post_title FROM $wpdb->posts WHERE ID < 10;" );
然后,我有一个迭代文件的函数
import urllib2
test_file = urllib2.urlopen('http://~/file.dat')
如果我想在不再次打开test_file的情况下调用此函数两次:
def f(file):
while True:
iter = file.readline()
if iter == "":
break
print iter
然后我应该在f函数中添加什么?
更新: 由于我不允许在功能之外更改任何内容,我终于找到了一个愚蠢但有效的解决方案:
f(test_file)
f(test_file)
感谢那些回答我问题的人!
答案 0 :(得分:0)
f.seek(0)
将您返回到文件的开头。参数是文件中的字节位置。
答案 1 :(得分:0)
所以你要做的最好的事情就是将f.read()的输出保存到var中,然后通过StringIO.readline()
方法推送,该方法与f.readline()
类似,但在import urllib2
import StringIO
t_fh = urllib2.urlopen('http://ftp.cs.stanford.edu/pub/sgb/test.dat')
test_data = t_fh.read()
def f(data):
buf = StringIO.StringIO(data)
while True:
line = buf.readline()
if line == "":
break
print line
f(test_data)
内存储器中。
{{1}}