Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/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 仅从online.txt文件下载某些行_Python_Bash_Pandas - Fatal编程技术网

Python 仅从online.txt文件下载某些行

Python 仅从online.txt文件下载某些行,python,bash,pandas,Python,Bash,Pandas,基因组注释存储在大型普通文本文件中,例如 我只想提取以“FT”开头的行。由于我需要提取数千个这些文件的“FT”,因此下载整个文件并手动提取所需的行是不可行的 是否有任何终端或python构造可以做到这一点?我最终想要创建一个大型(python)数据框架。您可以使用curl和grep。您仍然必须下载整个文件,除非ebi.ac.uk服务器api提供服务器端过滤 curl 'https://www.ebi.ac.uk/ena/data/view/FO203355&display=text' |

基因组注释存储在大型普通文本文件中,例如

我只想提取以“FT”开头的行。由于我需要提取数千个这些文件的“FT”,因此下载整个文件并手动提取所需的行是不可行的


是否有任何终端或python构造可以做到这一点?我最终想要创建一个大型(python)数据框架。

您可以使用curl和grep。您仍然必须下载整个文件,除非ebi.ac.uk服务器api提供服务器端过滤

curl 'https://www.ebi.ac.uk/ena/data/view/FO203355&display=text' | grep '^FT' > lines.txt

由于您最终打算使用
pandas
,因此只需将数据流式传输到脚本并过滤所需的行即可。最简单的方法是在流模式下使用
请求
模块,然后将远程数据视为文件流,即:

import requests

url = "https://www.ebi.ac.uk/ena/data/view/FO203355&display=text"

with requests.get(url, stream=True) as r:  # open a streaming request
    for line in r:  # iterate over the stream line by line
        if line[:2] == "FT":  # check if a line begins with `FT`
            print(line)  # or do whatever you want with the line
如果只想保存数据,可以将过滤后的行转发到文件输出流:

import requests

url = "https://www.ebi.ac.uk/ena/data/view/FO203355&display=text"

with requests.get(url, stream=True) as r, open("output.dat", "w") as f:
    for line in r:  # iterate over the stream line by line
        if line[:2] == "FT":  # check if a line begins with `FT`
            f.write(line)  # write the line to output.dat
您可能希望创建数据帧并直接将该行解析到其中,但这取决于您希望如何解析数据,所以这是我留给您的练习