如何使用 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
我正在尝试从这个 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