如何使用Python从远程文本文件检索最后的字符?
我正在尝试从这个txt文件的最后第二列中获取数字 网址: 我只需要文件末尾第二列中的最后一个值 我在Python3(.4?)中尝试了一些不同的示例代码 此代码仅从文件开头获取特定数量的字符:如何使用Python从远程文本文件检索最后的字符?,python,python-3.x,urllib,Python,Python 3.x,Urllib,我正在尝试从这个txt文件的最后第二列中获取数字 网址: 我只需要文件末尾第二列中的最后一个值 我在Python3(.4?)中尝试了一些不同的示例代码 此代码仅从文件开头获取特定数量的字符: # coding: utf-8 import urllib.request req = urllib.request.Request('http://services.swpc.noaa.gov/text/wing-kp.txt') with urllib.request.urlopen(req) as r
# coding: utf-8
import urllib.request
req = urllib.request.Request('http://services.swpc.noaa.gov/text/wing-kp.txt')
with urllib.request.urlopen(req) as response:
the_page = response.read(100)
print (the_page)
我尝试了.seek函数,但它返回了一个我无法识别的值
在下面的代码中,我首先尝试直接从网页中使用.seek,但它不起作用,因此我尝试先保存文件,然后从文件中读取,但没有/有限的成功
# coding: utf-8
import urllib.request
req = urllib.request.Request('http://services.swpc.noaa.gov/text/wing-kp.txt')
with urllib.request.urlopen(req) as response:
open('data.txt', 'wb').write(urllib.request.urlopen(req).read())
file = open('data.txt' , 'rb+')
data = file.seek(-5, 2)
file.close()
print (data)
如果只需要倒数第二个值,可以这样做:
file = open('data.txt' , 'rb+')
data = file.readlines()
file.close()
data = [i for i in str(data[-1]).strip().split(" ") if i != ''][-2]
使用
file.readlines()
我们可以得到所有行的列表,在那里我们可以通过[-1]
索引获取最后一行。然后,我们可以简单地用空格分割,并用所有非空字符串构造一个新列表,其中最后一列作为列表的第二个元素。这假设最后两列的值中没有空格,并且不适用于解析所有列,因为日期等其他数据也用空格分隔。使用请求而不是urllib
。假设您不需要磁盘上的文件:
import requests
url = "http://services.swpc.noaa.gov/text/wing-kp.txt"
data = [x for x in requests.get(url).content.rstrip().split("\n")[-1].split(" ") if x][-2]
命令行版本,因为为什么不?:)
谢谢你的回答和良好的描述!这正是我想要的。
$ python -c 'import requests; print [x for x in requests.get("http://services.swpc.noaa.gov/text/wing-kp.txt").content.rstrip().split("\n")[-1].split(" ") if x][-2]'
2.33