首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python POST fastq文件

Python POST fastq文件
EN

Stack Overflow用户
提问于 2020-05-11 14:15:39
回答 1查看 138关注 0票数 0

我想知道如何通过请求发布fastq文件/python对象。

代码语言:javascript
运行
复制
from Bio import SeqIO
seqs = SeqIO.parse("/path/to/seqfile.fastq", "fastq")

我使用Bio来解码fastq文件。我希望发送整个fastq文件,然后在服务器端创建对象,或者在服务器端发布对象并解码对象。

最好是发送整个fastq文件,我知道对于一个文本文件您会这样做:

代码语言:javascript
运行
复制
files = {'upload_file': ('foobar.txt', open('file.txt','rb'), 'text/x-spam')}

r = requests.post(url, files=files)

因此,最基本的问题是,fastq文件的头是什么?

比如,文本:'text/x-spam',json:'application/json',等。

EN

回答 1

Stack Overflow用户

发布于 2020-05-16 09:46:26

您运行的是给您提供注释中提到的AttributeError的什么?

从您的问题中还不完全清楚这是否是您要做的,但您不应该尝试将SeqIO.parse的结果作为一个文件上载。它返回文件对象的迭代器,如果希望通过HTTP将对象作为JSON发送,则可以使用自定义JSON编码器/解码器序列化和解码文件对象。

或者,您只需在上传中发送文件的文本内容,然后将其保存到磁盘/使用文本处理程序并使用Biopython进行解析。

接受FASTQ文件、然后使用StringIO包装器解析内容的Flask端点示例如下:

代码语言:javascript
运行
复制
from io import StringIO

from flask import Flask, request
from Bio import SeqIO

app = Flask(__name__)


@app.route('/', methods=['POST'])
def simple_upload():
    if request.method == 'POST':
        if 'file' not in request.files:
            print('No file part')
            return 'Error', 500
        file = request.files['file']
        if file.filename == '':
            print('No selected file')
            return 'Error', 500
        if file:
            for s in SeqIO.parse(StringIO(file.read().decode('utf-8')), 'fastq'):
                print(s.id)
            print(file.content_type)
    return 'OK', 200

如果你跑:

代码语言:javascript
运行
复制
import requests
files = {'file': ('my_test_file.fastq', open('my_test_file.fastq', 'rb'), 'text/plain')}
url='http://127.0.0.1:5000/'
r = requests.post(url, files=files)

然后,服务器端将成功地打印出上传文件中序列的in。

这只是一个简单的概念证明,这是可行的,你可以做任何你喜欢对上传的文件-保存到磁盘,处理内容,显示内容等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61731852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档