Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从远程超链接读取信息(知道通过超链接它将是csv文件,但无法找到一般方法)_Csv_Python 3.x_Hyperlink_Fetch - Fatal编程技术网

从远程超链接读取信息(知道通过超链接它将是csv文件,但无法找到一般方法)

从远程超链接读取信息(知道通过超链接它将是csv文件,但无法找到一般方法),csv,python-3.x,hyperlink,fetch,Csv,Python 3.x,Hyperlink,Fetch,我正在使用Python 3.4。我曾尝试在网络上找到解决方案,但仍然没有 我有一个到csv文件(数据集)的链接 有没有一种方法可以从这个链接中获取信息,而不必在本地目录中复制它?(例如,我的磁盘上没有足够的空间) 我想继续处理RAM中的数据(例如,我计划找出有多少数据行,并且必须做一些数据挖掘和过滤工作,目前不重要的是它将是什么)尝试以下方法: import requests r = requests.get('http://127.0.0.1/some_path/small.csv') pri

我正在使用Python 3.4。我曾尝试在网络上找到解决方案,但仍然没有

我有一个到csv文件(数据集)的链接

有没有一种方法可以从这个链接中获取信息,而不必在本地目录中复制它?(例如,我的磁盘上没有足够的空间)

我想继续处理RAM中的数据(例如,我计划找出有多少数据行,并且必须做一些数据挖掘和过滤工作,目前不重要的是它将是什么)

尝试以下方法:

import requests
r = requests.get('http://127.0.0.1/some_path/small.csv')
print len(r.content.split('\n')) -1
结果: 十,

对于small.csv文件,如下所示:

1lpcfgokakmgnkcojhhkbfbldkacnbeo,6B5108
pjkljhe2ncpnkpknbcohdijeoejaedia,678425
apdfllc5aahabafndbhieahigkjlhalf,651374
aohghmighlieiainnegkcijnfilokake,591116
coobgpohoikkiipiblmjeljniedjpjpf,587200
dmgjnkhnkblpmfjpdakehnaikgdjllic,540979
felcaaldnbdncclmgdcncolpebgiejap,480535
aapocclcgogkmnckokdopfmhonfmgoek,480441
pdehmppfilefbolgganhfihpbmjlgebh,273609
nafaimnnclfjfedmmabolbppcngeolgf,105979
编辑:(根据MHawke的建议)

此版本不计算空行,对于大型文件应该更有效,因为它使用
iter\u行

iter\u行(块大小=512,解码unicode=None,分隔符=None)

一次迭代一行响应数据。什么时候 stream=True是在请求时设置的,这避免了在请求时读取内容 一旦进入内存,即可获得较大的响应


(注意:不可重入安全)

向文件的URL发出HTTP GET请求,然后计算行数。。。。看起来很简单。你卡在哪里了,你试过什么?@cricket_007我试过这个,但它只适用于本地csv文件好的,可以,但你需要通过打开URL而不是文件来获取文件内容。使用答案中提到的请求库是一种快速的方法。saxony的@rolf_提供了一个有效的解决方案。是什么原因导致如此无耻的否决投票并将问题搁置?如果他们每个人都被否决了,我该怎么问问题?如果一个被否决的选民能够更具体地解释他为什么会被否决,这也会更公平。根据“我可以申请重新打开问题”,请以这种方式继续或指定缺少的内容。我没有否决投票,但我只能猜测您没有包括您尝试过的内容,也没有研究如何从网站获取文件内容。如果你不想被否决,请参考这里。此外,答案已被接受,因此没有理由重新打开。已在安装请求包的情况下尝试解决方案,但出现语法错误。刚刚用“print(len(r.content.split())”修复了它,那么您正在使用Python3!相应地更新了标签。您的解决方案非常有效!顺便说一句,我不知道是谁一直在对我的每一个问题投反对票。这个答案被否决了,因为只要数据中有空格,使用
split()
就会失败。@Rolfsaxony:也许更好的方法是使用
r.iter_lines()
。如果在发出请求时结合设置
stream=True
,则内存使用率非常低。无论如何,我已经取消了否决票。您可能还应该过滤掉任何空行。
import requests
line_cnt=0
r = requests.get('http://127.0.0.1/some_path/small.csv',stream=True)
for i in r.iter_lines():
    if i.strip():
        line_cnt +=1
print (line_cnt)