質問編集履歴
1
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -1,78 +1,1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            ###プログラム
         
     | 
| 
       2 
     | 
    
         
            -
            n行2列の入力ファイルを読み込んで、欲しいデータを選択して並び替え、新たにcsvファイルに出力するプログラムです。
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            import numpy as np
         
     | 
| 
       5 
     | 
    
         
            -
            import sys
         
     | 
| 
       6 
     | 
    
         
            -
            from sys import argv
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            if len(sys.argv) < 5:
         
     | 
| 
       9 
     | 
    
         
            -
                sys.exit()
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            input_file = sys.argv[1]   #入力ファイル
         
     | 
| 
       12 
     | 
    
         
            -
            output_file = sys.argv[2]   #出力ファイル
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            printの内容をcsv形式でファイルに出力する方法を教えていただきたいです。
         
     | 
| 
       14 
     | 
    
         
            -
            n = int(sys.argv[4])     #              同上
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
            data1 = np.loadtxt(input_file, delimiter=",", usecols=[0])
         
     | 
| 
       17 
     | 
    
         
            -
            data2 = np.loadtxt(input_file, delimiter=",", usecols=[1])
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
            (中略)
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
            f=open("output_file","w")    #コマンドラインでoutput_fileを読み込んでいる
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
            for i in range(start,count-t2):
         
     | 
| 
       24 
     | 
    
         
            -
             
         
     | 
| 
       25 
     | 
    
         
            -
            	
         
     | 
| 
       26 
     | 
    
         
            -
            	g += 1
         
     | 
| 
       27 
     | 
    
         
            -
            	x=data1[g]      # ・・・a
         
     | 
| 
       28 
     | 
    
         
            -
            	print(*x, sep=', ',end='',file=f)  #ここが分からない
         
     | 
| 
       29 
     | 
    
         
            -
            	
         
     | 
| 
       30 
     | 
    
         
            -
            (中略)
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
            	for j in range(row,high):
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
            	  row = int(row)+1
         
     | 
| 
       35 
     | 
    
         
            -
            	  y = data2[row]   # ・・・b
         
     | 
| 
       36 
     | 
    
         
            -
            	  print(*y, sep=', ',end='',file=f)  #ここがわからない
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
            	start = start + 1
         
     | 
| 
       39 
     | 
    
         
            -
            	print()
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
            f.close()
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
            ###教えていただきたいこと
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
            上記のプログラムのaとbの部分を、1つのcsvファイルに書き出す方法を教えていただきたいです。ファイル出力しようとせずに、端末で実行してみたところ、やりたいことは実現できているのですが、ファイルへの書き出しができなくて困っています。
         
     | 
| 
       46 
     | 
    
         
            -
            ファイルへの書き出し方法は、fopenでなくてもなんでもよいです。
         
     | 
| 
       47 
     | 
    
         
            -
            また、書き出しは「改行なし」で行いたいです。
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
            ちなみにこのプログラムを実行すると、
         
     | 
| 
       50 
     | 
    
         
            -
            print(*x, sep=', ',end='',file=f)
         
     | 
| 
       51 
     | 
    
         
            -
            の「*」が引っかかって動きません。 
         
     | 
| 
       52 
     | 
    
         
            -
            「*」を消すと実行はできますが、何も表示されません。
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
            ###理想の出力ファイル
         
     | 
| 
       55 
     | 
    
         
            -
            入力ファイルはn行2列のcsvファイルです。このプログラムは、aの部分で入力ファイルの1列目から値を1つ取ってきて、bの部分で2列目から複数の値をとってくるようになっています。
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
            例)
         
     | 
| 
       58 
     | 
    
         
            -
            1週目のループで、aで3を取ってきて、bで1,2,3,4,5を取ってきたとすると、出力ファイルの1行目に、
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
            3,1,2,3,4,5
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
            と並ぶのが理想です。
         
     | 
| 
       63 
     | 
    
         
            -
            2週目のループで、aで4、bで2,3,4,5,6を取ってきたとすると、
         
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
            3,1,2,3,4,5
         
     | 
| 
       66 
     | 
    
         
            -
            4,2,3,4,5,6
         
     | 
| 
       67 
     | 
    
         
            -
            ・
         
     | 
| 
       68 
     | 
    
         
            -
            ・
         
     | 
| 
       69 
     | 
    
         
            -
            ・
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
            と続いていきます。
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
            ###print以外に試してみたこと
         
     | 
| 
       74 
     | 
    
         
            -
            fopenを消し、2つのprintの部分を、
         
     | 
| 
       75 
     | 
    
         
            -
            sys.stdout.write((str)(x)+ ", ")
         
     | 
| 
       76 
     | 
    
         
            -
            と
         
     | 
| 
       77 
     | 
    
         
            -
            sys.stdout.write((str)(y)+ ", ")
         
     | 
| 
       78 
     | 
    
         
            -
            でやってみました。これを端末で実行すると理想通りの形になりましたが、ファイルに出力させる方法が分かりませんでした。また、入力ファイルの値は、1.32345のように小数点以下まであるのですが、このやり方では整数に直されてしまうので、そこも上手くいきませんでした。
         
     |