如何使用 Python 从远程文本文件中检索最后一个字符?

How to retrieve the last characters from a remote text file using Python?

我正在尝试从这个 txt 文件的倒数第二列中获取数字 url: http://services.swpc.noaa.gov/text/wing-kp.txt

我只需要文件末尾倒数第二列中的最后一个值。

我在 Python 3(.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 response:
 the_page = response.read(100)
print (the_page)

我尝试了 .seek 函数,但它返回了一个我无法识别的值。

在下面的代码中,我首先尝试直接从网页上使用 .seek,但它没有用,所以我尝试先保存文件,然后从文件中读取 no/limited 成功.

# 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] 索引获取最后一行。然后,我们可以简单地按空格拆分并构造一个包含所有 non-empty 字符串的新列表,现在我们将倒数第二列作为列表的倒数第二个元素。这假定没有空格 in 最后两列的值并且不适用于解析所有列,因为日期等其他数据也由空格分隔。

使用 requests 而不是 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