Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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
如何使用Python从远程文本文件检索最后的字符?_Python_Python 3.x_Urllib - Fatal编程技术网

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

如何使用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

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