如何返回Urlopen对象中的第一行

时间:2015-09-23 23:06:53

标签: python iteration urllib2 urlopen

我正在使用

在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)

感谢那些回答我问题的人!

2 个答案:

答案 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}}