Python实现随机读取文本N行数据

工作中需要判断某个文本中的URL是否能正常访问,并且随机获取其中N行能正常访问的URL数据,我的思路是:读取文本每一行数据,用urlopen访问,将返回状态码为200的URL保存到一个列表,获得列表长度,使用random产生一个随机值作为列表下标,获取该行数据。具体实现如下:

 1 import urllib2,random
 2 from sets import Set
 3
 4 def get_responses(url):
 5     global good_list
 6     global bad_list
 7     if not url.startswith("http:"):
 8         http_url = "http://" + url
 9     headers = {‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 5.1; rv:10.0.1) Gecko/20100101 Firefox/10.0.1‘,}
10     try:
11         request = urllib2.Request(http_url, headers=headers)
12         resp = urllib2.urlopen(request)
13     print url
14     except urllib2.URLError, e:
15         print e
16         bad_list.append(url)
17         return 0
18
19     retcode = resp.getcode()
20     if retcode == 200:
21         good_list.append(url)
22         #return 1
23     else:
24         bad_list.append(url)
25         #return 0
26
27 def readFile():
28     try:
29         urllist = open(r‘C:\Users\888\Desktop\urls.txt‘,‘r‘)
30     except IOError:
31         print "file does not exist.\n"
32     for item in urllist:
33         item = item.strip(‘\n‘)
34         r = get_responses(item)
35
36     urllist.close()
37     print "Total URLs: %d, Good URLs:%d, Bad URLs: %d." %((len(good_list)+len(bad_list)),len(good_list),len(bad_list))
38
39 def writeFile(linenum):
40     result = []
41     linelen = len(good_list)
42     while len(Set(result)) < int(linenum):
43         s = random.randint(0,linelen-1)
44         result.append(good_list[s])
45
46     # Put the good_url in goodurl.txt file
47     try:
48         goodurl = open(r‘C:\Users\888\Desktop\goodurl.txt‘,‘w+‘)
49     except IOError:
50         print "file does not exist.\n"
51
52     for item in result:
53         goodurl.write(item+‘\n‘)
54     goodurl.close()
55
56     print "The mission is done, Please check the goodurl.txt file"
57
58 if __name__ == "__main__":
59     good_list = []
60     bad_list = []
61     readFile()
62     writeFile(100)
时间: 2024-10-12 09:22:01

Python实现随机读取文本N行数据的相关文章

Python中怎样读取文本.txt格式的文件

截取部分内容如下: 10.235186 11.321997 10.122339 11.810993 9.190236 8.904943 9.306371 9.847394 8.330131 8.340352 怎样将数据转化为矩阵? 第一步使用open()函数打开文件: 1 >>> fileName='D://softwareTool/Python/python_exerciseCode/Chap13_PCA//testSet.txt '; 2 >>> fr=open(f

http://www.dewen.net.cn/q/14665/个人感觉用二分法最完美的,需要操作系统支持随机读取指定一行的数据,貌似现在还不行,江湖救急呀

评论 (0) • 举报 (0) • 分享 • 链接 • 2013-09-16 添加评论...1个答案 票 数 brayden认证专家2 票brayden6562想一下数据库索引怎么做的? 参考b树的实现. 对这题来说, 10亿在 G量级, 分成100份, 为10M量级, 基本上放入内存无压力了. 在这10亿记录中, 均分为100份, 把每份的 第一条记录关键字和 此记录对应的文件偏移量先 扫入内存(类似索引?), 这里需要 磁盘随机io 100次. 这样可以马上定位出 指定关键字所在的记录块,

随机读取文件中的数据

#include<stdio.h> #include<stdlib.h> void main() { FILE *fpIn,*fpOut; fpOut = fopen("shuzu.txt","wb"); //以二进制只写方式 if(NULL == fpOut) { printf("Error:Open file fail !\n"); exit(1); } int a[10] = {1,22,333,4444,55555

[SoapUI] Groovy在SoapUI里获取Text文本第一行数据

// get external txt file datadef groovyUtils =new com.eviware.soapui.support.GroovyUtils(context)def csvFilePath =context.expand('${projectDir}/TestData/data.txt')context.fileReader= new BufferedReader(new FileReader(csvFilePath))rowsData =context.fi

python读取文本、配对、插入数据脚本

#-*- coding:UTF-8 -*- #-*- author:Zahoor Wang -*- import codecs, os, sys, platform, string def env(): return platform.system() def read_file(uri, charset = "utf-8"): f = codecs.open(uri, "r", charset) s = f.read() f.close() return s de

python 读取cvs 文件中多行数据

有的时候我们需要去读取多行多列数据 def duqu(): yiyuan = open('yiyuan_id2.csv','r') lines = yiyuan.readlines() yiyuan.close() for line in lines: id = line.split(',')[0] name = line.split(',')[1] print(id,name)duqu() 1.定义读取函数2.定义变量yiyuan,以只读的方式打开文件3.定义变量lines,通过读取多行数据赋

python 逐行读取文本

f = open("foo.txt") # 返回一个文件对象line = f.readline() # 调用文件的 readline()方法while line: print line, # 后面跟 ',' 将忽略换行符 # print(line, end = '') # 在 Python 3中使用 line = f.readline() f.close() 也可以写成以下更简洁的形式 for line in open("foo.txt"): print line,

Python 读取MySQL数据库表数据

环境 Python 3.6 ,Window 64bit 目的 从MySQL数据库读取目标表数据,并处理 代码 # -*- coding: utf-8 -*- import pandas as pd import pymysql ## 加上字符集参数,防止中文乱码 dbconn=pymysql.connect( host="**********", database="kimbo", user="kimbo_test", password=&quo

【Excel&amp;VBA】VBA解析本地文件目录 读取文本数据

偶尔用到Excel中VBA处理一些事情,毕竟鄙人比较懒,总是喜欢把那些重复性的工作想方设法交给计算机来处理,那样才能证明自己的大脑还在运转着,总结一些VBA中读取解析本地文件目录的方法. 1 ' 该函数是获取指定目录下所有的 文件夹 名 2 Sub readFile() 3 Path = "d:\" 4 sonpath = Dir(Path, vbDirectory) 5 Do While sonpath <> "" 6 ' 跳过当前的目录及上层目录 7