以下の私のcsvファイル(test.csv)コンテンツサンプル:注:私のtest.csvファイルは約60MBです。
"Position","Value"
"2545600","19"
"2545601","19"
"2545602","19"
"2545603","19"
"2545604","20"
"2545605","20"
"2545606","21"
"2545607","22"
"2545608","21"
"2545609","20"
"2545610","21"
"2545611","18"
"2545612","19"
"2545613","21"
"2545614","21"
"2545615","21"
"2545616","21"
"2545617","22"
"2545618","25"
"2545619","25"
以下の私のPythonコード(test.py):
#!/usr/bin/python
import sys
txt = open(sys.argv[1], 'r')
out = open(sys.argv[2], 'w')
mil = float(sys.argv[3])
out.write('chr\tstart\tend\tfeature\t'+sys.argv[2]+'\n')
for line in txt:
if 'Position' not in line:
line = line.strip('",\n')
line = line.split('","')
line[1] = str(int(line[1])/mil)
out.write('gi|255767013|ref|NC_000964.3|\t'+line[0]+'\t'+line[0]+'\t\t'+line[1]+'\n')
txt.close()
out.close()
私のコマンドライン:
python test.py test.csv test.igv 5
コマンドを実行した後、エラーが発生しました:
Traceback (most recent call last):
File "test.py", line 15, in <module>
line[1] = str(int(line[1])/mil)
ValueError: invalid literal for int() with base 10: '3"\r'
ただし、新しい空のcsvファイル(small.csv)を作成し、test.csvファイルから数行(上記のサンプルのように)だけコピーして貼り付ける場合。次に、そのコマンドを正常に実行します。
python test.py small.csv small.igv 5
small.csvを入力:
"Position","Value"
"2545600","19"
"2545601","19"
"2545602","19"
"2545603","19"
"2545604","20"
"2545605","20"
"2545606","21"
"2545607","22"
"2545608","21"
"2545609","20"
small.igvを出力します:
chr start end feature small.igv
gi|255767013|ref|NC_000964.3| 2545600 2545600 3.8
gi|255767013|ref|NC_000964.3| 2545601 2545601 3.8
gi|255767013|ref|NC_000964.3| 2545602 2545602 3.8
gi|255767013|ref|NC_000964.3| 2545603 2545603 3.8
gi|255767013|ref|NC_000964.3| 2545604 2545604 4.0
gi|255767013|ref|NC_000964.3| 2545605 2545605 4.0
gi|255767013|ref|NC_000964.3| 2545606 2545606 4.2
gi|255767013|ref|NC_000964.3| 2545607 2545607 4.4
gi|255767013|ref|NC_000964.3| 2545608 2545608 4.2
gi|255767013|ref|NC_000964.3| 2545609 2545609 4.0
それが私が欲しいすべてです。それで問題は、なぜ私はより大きなサイズのcsvファイルでそれを行うことができないのですか?