从Url地址读取Fasta文件

从Url地址读取Fasta文件,url,fasta,Url,Fasta,我正在使用Python 3.4。 我写了一些代码来读取来自互联网站点的Fasta文件,但它不起作用。 (我可以下载并读取文本文件,但我计划从给定站点读取多个Fasta文件。) (1) 第一次尝试 此代码可以读取我桌面计算机中的任何Fasta文件,但它无法从internet站点读取相同的Fasta文件 >>> from urllib.request import urlopen >>> html = urlopen("http://www.uniprot.or

我正在使用Python 3.4。
我写了一些代码来读取来自互联网站点的Fasta文件,但它不起作用。
(我可以下载并读取文本文件,但我计划从给定站点读取多个Fasta文件。)

(1) 第一次尝试 此代码可以读取我桌面计算机中的任何Fasta文件,但它无法从internet站点读取相同的Fasta文件

>>> from urllib.request import urlopen
>>> html = urlopen("http://www.uniprot.org/uniprot/B5ZC00.fasta")
>>> print (read_fasta(html))
TypeError: invalid file: <http.client.HTTPResponse object at 0x02A62EF0>
我原以为我可以修改代码,将文件作为字符串列表在线读取,但很快我意识到这并不容易

>>> print (type(lines[0]))
<class 'bytes'>
(3) 问题 如何删除脏的“b”字符?
有没有更好的方法从给定的Url读取文件

在一些帮助下,我想我可以修改和完成我的代码。
谢谢

我迟到了,但如果有用我会回答

在python 2中

import urllib2

url = "http://www.uniprot.org/uniprot/B5ZC00.fasta"
response = urllib2.urlopen(url)
fasta = response.read()

print fasta
在python 3中

from urllib.request import urlopen

url = "http://www.uniprot.org/uniprot/B5ZC00.fasta"
response = urlopen(url)
fasta = response.read().decode("utf-8", "ignore")

print(fasta)
你会得到:

>sp|B5ZC00|SYG_UREU1 Glycine--tRNA ligase OS=Ureaplasma urealyticum serovar 10 (strain ATCC 33699 / Western) GN=glyQS PE=3 SV=1 MKNKFKTQEELVNHLKTVGFVFANSEIYNGLANAWDYGPLGVLLKNNLKNLWWKEFVTKQ KDVVGLDSAIILNPLVWKASGHLDNFSDPLIDCKNCKARYRADKLIESFDENIHIAENSS NEEFAKVLNDYEISCPTCKQFNWTEIRHFNLMFKTYQGVIEDAKNVVYLRPETAQGIFVN FKNVQRSMRLHLPFGIAQIGKSFRNEITPGNFIFRTREFEQMEIEFFLKEESAYDIFDKY LNQIENWLVSACGLSLNNLRKHEHPKEELSHYSKKTIDFEYNFLHGFSELYGIAYRTNYD LSVHMNLSKKDLTYFDEQTKEKYVPHVIEPSVGVERLLYAILTEATFIEKLENDDERILM DLKYDLAPYKIAVMPLVNKLKDKAEEIYGKILDLNISATFDNSGSIGKRYRRQDAIGTIY CLTIDFDSLDDQQDPSFTIRERNSMAQKRIKLSELPLYLNQKAHEDFQRQCQK
如果您只对初级氨基酸序列感兴趣(希望忽略标题),请尝试以下操作:

link = str(sys.argv[1]) #fasta file URL provided as command line argument
FASTA = urllib.urlopen(link).readlines()[1:] # as list without header (">...")
FASTA = "".join(FASTA).replace("\n","") # as a string free of new line markers
print FASTA

派对有点晚了,但尝试Jose的Biopython答案在Python 3中不再有效。这里有一个替代方案:

来自Bio导入序列
导入请求
从io导入StringIO
链接=”http://www.uniprot.org/uniprot/B5ZC00.fasta"
data=requests.get(link).text
fasta_迭代器=SeqIO.parse(StringIO(数据),“fasta”)
#漂亮的打印fasta信息
对于fasta_迭代器中的seq:
打印(顺序格式(“fasta”))
from urllib.request import urlopen

url = "http://www.uniprot.org/uniprot/B5ZC00.fasta"
response = urlopen(url)
fasta = response.read().decode("utf-8", "ignore")

print(fasta)
>sp|B5ZC00|SYG_UREU1 Glycine--tRNA ligase OS=Ureaplasma urealyticum serovar 10 (strain ATCC 33699 / Western) GN=glyQS PE=3 SV=1 MKNKFKTQEELVNHLKTVGFVFANSEIYNGLANAWDYGPLGVLLKNNLKNLWWKEFVTKQ KDVVGLDSAIILNPLVWKASGHLDNFSDPLIDCKNCKARYRADKLIESFDENIHIAENSS NEEFAKVLNDYEISCPTCKQFNWTEIRHFNLMFKTYQGVIEDAKNVVYLRPETAQGIFVN FKNVQRSMRLHLPFGIAQIGKSFRNEITPGNFIFRTREFEQMEIEFFLKEESAYDIFDKY LNQIENWLVSACGLSLNNLRKHEHPKEELSHYSKKTIDFEYNFLHGFSELYGIAYRTNYD LSVHMNLSKKDLTYFDEQTKEKYVPHVIEPSVGVERLLYAILTEATFIEKLENDDERILM DLKYDLAPYKIAVMPLVNKLKDKAEEIYGKILDLNISATFDNSGSIGKRYRRQDAIGTIY CLTIDFDSLDDQQDPSFTIRERNSMAQKRIKLSELPLYLNQKAHEDFQRQCQK
from Bio import SeqIO
import urllib2

url = "http://www.uniprot.org/uniprot/B5ZC00.fasta"
response = urllib2.urlopen(url)
fasta_iterator = SeqIO.parse(response, "fasta")

for seq in fasta_iterator:
  print seq.format("fasta")
link = str(sys.argv[1]) #fasta file URL provided as command line argument
FASTA = urllib.urlopen(link).readlines()[1:] # as list without header (">...")
FASTA = "".join(FASTA).replace("\n","") # as a string free of new line markers
print FASTA