亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 3428 | 回復: 19
打印 上一主題 下一主題

讀取文件如何接著上一次的進度 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-05-31 19:00 |只看該作者 |倒序瀏覽
類似這樣的結(jié)構:
  1. while(<IF1>){
  2.     #進行一定處理   
  3.     while(<IF2>){
  4.         #進行一定處理;
  5.         last;
  6. }}
復制代碼
現(xiàn)在希望當讀取下一行IF1句柄的時候,再讀取IF2時是從上一次last時終止的位置開始,而不用再從頭讀取,應該怎么實現(xiàn)呢?

論壇徽章:
0
2 [報告]
發(fā)表于 2013-05-31 19:18 |只看該作者

來人呀呀呀,這個功能相當重要,效率至少提高一百倍

論壇徽章:
145
技術圖書徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11獅子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龍
日期:2014-01-08 15:26:12技術圖書徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
3 [報告]
發(fā)表于 2013-05-31 19:20 |只看該作者
回復 1# raoweijian

It seems fine and no issue.
would you post your code?

$ cat a
a1
a2

$ cat b
b1
b2

$ cat get_ab.pl
#! /usr/bin/perl
use strict;
use warnings;

open IF1, "<", "a" or die "can't open a file\n";
open IF2, "<", "b" or die "can't open b file\n";

while(<IF1>){
  #進行一定處理   
  print;
  while(<IF2>){
    #進行一定處理;
    print;   
    last;
  }
}

$ perl get_ab.pl
a1
b1
a2
b2

論壇徽章:
0
4 [報告]
發(fā)表于 2013-05-31 19:30 |只看該作者
為什么覺得會從頭讀????????

論壇徽章:
0
5 [報告]
發(fā)表于 2013-05-31 19:41 |只看該作者
回復 4# picbhan


目前情況是,要根據(jù)IF1的信息去IF2里面找對應信息,已知IF1里面的信息和IF2里面的信息相對位置是相同的,比如在IF1里面,第二行在IF2里面對應第二行,那么在IF1里面的第三行,就一定對應IF2里面第二行或者往下,絕對不會對應到第一行。

但是現(xiàn)在執(zhí)行的效率,越到后面越慢,就可以看出應該是每次打開IF2都會重頭讀取,讀取前面無意義的行浪費很多時間。
因為行數(shù)很多,幾十萬行,到后面效率幾乎為0了。

論壇徽章:
2
射手座
日期:2014-10-10 15:59:4715-16賽季CBA聯(lián)賽之上海
日期:2016-03-03 10:27:14
6 [報告]
發(fā)表于 2013-05-31 21:30 |只看該作者
回復 5# raoweijian


    用seek吧

論壇徽章:
0
7 [報告]
發(fā)表于 2013-06-01 08:35 |只看該作者
tell  + seek

論壇徽章:
0
8 [報告]
發(fā)表于 2013-06-01 08:59 |只看該作者
  1. [root@b ~]# cat a
  2. 1
  3. 2
  4. 3
  5. [root@b ~]# cat b
  6. a
  7. b
  8. c
  9. [root@b ~]# cat 3.pl
  10. #!/usr/bin/perl
  11. open $a,"./a";
  12. open $b,"./b";

  13. while(<$a>){
  14.         print;
  15.         seek($b,$tell,0);
  16.         while(<$b>){
  17.                 print;
  18.                 $tell=tell($b);
  19.                 last;
  20.         }

  21. }
  22. [root@b ~]# perl 3.pl
  23. 1
  24. a
  25. 2
  26. b
  27. 3
  28. c
  29. [root@b ~]
復制代碼

論壇徽章:
0
9 [報告]
發(fā)表于 2013-06-03 14:21 |只看該作者
本帖最后由 raoweijian 于 2013-06-03 14:26 編輯

回復 8# wsxedcer

你的方法我試了,結(jié)果還是有點問題,是我之前忘了說明了。
現(xiàn)在有兩個文件,一個是SNP說明文件,另一個是染色體對應scaffold的文件
如圖



現(xiàn)在需要把每條SNP信息上的染色體坐標(對應第一列和第二列,表示哪條染色體的第幾個位點)轉(zhuǎn)換成對應scaffold上的坐標。
第二張圖表示染色體上從第幾個位點開始,到第幾個位點結(jié)束,對應的scaffold名字,以及scaffold起止點(一般都是1開始)
按照你的方法,有一個問題,就是當下一條SNP信息與上一條SNP信息在同一個scaffold上的時候,則會被跳過,因為seek已經(jīng)定位到下一行了,找不到該條SNP的坐標在scaffold上的信息。

有沒有簡便高效的方法解決這個問題呢?
ps(可否直接seek的時候,再往前推進1000個字節(jié),對效率影響不大,但是會不會改變<>操作符一行一行讀的特點呢?)

論壇徽章:
0
10 [報告]
發(fā)表于 2013-06-03 16:10 |只看該作者
謝謝大家的幫助,已經(jīng)改好了。
用tell和seek,加了一點修改就好啦
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP