2016-03-24 5 views
-1

pythonスクリプトに渡されたパラメータをファイルにコピーしようとしています。ここにパラメータがあります。リストにパラメータをコピーする

["0013","1","1","\"[email protected]\"","1","P123-ND           10Q","10Q            H??C"] 

私は、バッファに問題があることを理解し、私は私のパラメータに不正なデータを取得しています。しかし、私は渡されているものを制御する必要はありません。私は5番目のパラメータから始めて、パラメータをファイルにコピーしようとしています。

f = open(in_file_name, 'w') 
    for x in range(5, len(arg_list)): 
     f.write(arg_list[x] + '\n') 
    f.close() 

ファイルの結果は以下の通りです:ここでは

P123-ND 10Q 
10Q H??C 

は、それがどうあるべきかです:

P123-ND 
10Q 

どのように私は悪いデータを含めることはできませんか?有効な情報と悪い情報の間のスペースには何が起こっていますか?

要求されたとして、ここでは完全なプログラムがある:あなたの正確なケースでは

#!/bin/python 

class Argument_Indices: 
    PRINTER_INDEX = 0 
    AREA_INDEX = 1 
    LABEL_INDEX = 2 
    EMAIL_INDEX = 3 
    RUN_TYPE_INDEX = 4 

import argparse 
import json 
import os 
from subprocess import call 
import sys 
from time import strftime 

def _handle_args(): 
    ''' Setup and run argpars ''' 
    parser = argparse.ArgumentParser(description='Set environment variables for and to call Program') 
    parser.add_argument('time_to_run', default='NOW', choices=['NOW', 'EOP'], help='when to run the report') 
    parser.add_argument('arguments', nargs='+', help='the remaining command line arguments') 
    return parser.parse_args() 

def _proces_program(arg_list): 
    time_stamp = strftime("%d_%b_%Y_%H_%M_%S") 
    printer = arg_list[Argument_Indices.PRINTER_INDEX] 
    area = arg_list[Argument_Indices.AREA_INDEX] 
    label = arg_list[Argument_Indices.LABEL_INDEX] 
    in_file_name = "/tmp/program{0}.inp".format(time_stamp) 
    os.environ['INPUT_FILE'] = in_file_name 

    f = open(in_file_name, 'w') 
    for x in range(5, len(arg_list)): 
     f.write(arg_list[x]) 
    f.close() 

    call(['./Program.bin', printer, area, label]) 

    os.remove(in_file_name) 

def main(): 

    ''' Main Function ''' 

    arg_list = None 
    args = _handle_args() 
    if len(args.arguments) < 1: 
     print('Missing name of input file') 
     return -1 
    with open(args.arguments[0]) as input_file: 
     arg_list = json.load(input_file) 

    _process_program(arg_list) 

    return 0 

if __name__ == '__main__': 
    if main() != 0: 
     print('Program run failed') 
    sys.exit() 
+0

あなたは5日からやりたいと思っていましたが、あなたは確認できますか? – idjaw

+2

'(arg_list [x] .split())[0]'はどうですか? – Arman

+0

私たちのコンピュータをチェックできるように、 "完全な"(面白い)実行可能コードをコピーしてください。 – tglaria

答えて

0

(あなたは、間にいくつかのスペースを受信したパラメータを重複して取得している場合)、これは動作します:

received_param_list = ["0013","1","1","\"[email protected]\"","1","P123-ND           10Q","10Q            H??C"] 

arg_list = [i.split(" ")[0] for i in received_param_list] 

last_param = received_param_list[-1].split()[-1] 
if last_param != arg_list[-1]: 
    arg_list.append(last_param) 

for x in range(5, len(arg_list)): 
    print (arg_list[x]) 

あなたにはもっと簡単な方法があるかもしれませんが

関連する問題