首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修改代码从外部获取查询并将结果保存到外部

如何修改代码从外部获取查询并将结果保存到外部
EN

Stack Overflow用户
提问于 2016-08-14 17:27:30
回答 1查看 32关注 0票数 0

我有一个代码,看起来像这样

代码语言:javascript
复制
require 'net/http'

base = 'www.uniprot.org'
tool = 'mapping'
params = {
  'from' => 'ACC+ID', 'to' => 'P_ENTREZGENEID', 'format' => 'tab',
  'query' => 'A0A0K3AVS5 A0A0K3AVV4 A0A0K3AW32 A0A0K3AWP0'
}

http = Net::HTTP.new base
$stderr.puts "Submitting...\n";
response = http.request_post '/' + tool + '/',
  params.keys.map {|key| key + '=' + params[key]}.join('&')

loc = nil
while response.code == '302'
  loc = response['Location']
  response = http.request_get loc
end

while loc
  wait = response['Retry-After'] or break
  $stderr.puts "Waiting (#{wait})...\n";
  sleep wait.to_i
  response = http.request_get loc
end

response.value # raises http error if not 2xx
puts response.body

这就给了我所需要的。然而,我有两个问题

1-如何加载查询列表,而不是解析成代码?假设我保存了一个txt文件,其中包含我想要的所有查询到mac的桌面

2-如何导出输出?

如果我有

代码语言:javascript
复制
B2D6P1
G5EC52
B2FDA8-2
B2MZB1
B3CJ34
B3CKG1
B3GWA1

@tadman展示的内容给了我答案,但我有以下几点

代码语言:javascript
复制
B2D6P1
G5EC52;B2D6P4
B2FDA8-2;B2FDA8
B2MZB1;P18834
B3CJ34
B3CKG1
B3GWA1;Q8I7K5

答案是这样的

代码语言:javascript
复制
B2D6P1  rmd-2
G5EC52  tlf-1
B2D6P4  tlf-1
B2FDA8  smc-3
B2MZB1  col-14
P18834  col-14
B3CJ34  gcn-1
B3CKG1  urm-1
B3GWA1  nono-1
Q8I7K5  nono-1

我想要的是,如果我在每一行中有两个条目(用;分隔),导致类似的输出,它只给我一个,否则给我他们拥有的所有条目。例如,在上面的例子中,我想要的输出是

代码语言:javascript
复制
B2D6P1                rmd-2
G5EC52;B2D6P4         tlf-1
B2FDA8-2;B2FDA8       smc-3
B2MZB1;P18834         col-14
B3CJ34                gcn-1
B3CKG1                urm-1
B3GWA1;Q8I7K5         nono-1

这是可能的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-14 18:33:43

正在读取查询数据:

代码语言:javascript
复制
query = File.readlines('ids.txt').map(&:chomp).join(' ')

这样,您可以将它们放在单独的行中,更容易编辑,并且在提交时它们是空格分隔的。

这使得你的params看起来像:

代码语言:javascript
复制
params = {
  'query' => query,
  ...
}

写入数据:

代码语言:javascript
复制
File.open('output.txt', 'w') do |f|
  f.write(response.body)
end

非那样做不行。如果它是字符串,或者可以转换为字符串,则可以将其写入文件。

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

https://stackoverflow.com/questions/38940863

复制
相关文章

相似问题

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