2017-11-01 17 views
1

この関数のファイルを開こうとすると、すべての名前が取得されません。私は、この取得したい:名前のファイルを開く

Smith, Joe,9911991199,smithjoe9,99,88,77,66 
Ash, Wood,9912334456,ashwood,11,22,33,44 
Full, Kare,9913243567,fullkare,78,58,68,88 

をしかし、私は機能をテストするとき、私はこれを取得:

['Ash, Wood,9912334456,ashwood,11,22,33,44\n', 'Full, Kare,9913243567,fullkare,78,58,68,88\n'] 

誰も私がこの問題を解決する助けてくださいことはできますか?どのようにして最初の人の名前を含めることができますか?

def open_grades_file(filename): 
    '''(str) -> file 

    Open filename, read past its one-line header and 
    return the open file. 
    ''' 
    file = open(filename, 'r') 
    file.readline() 
    for line in file: 
     line.rstrip('\n') 
     return file 
+1

なぜファイルを返すのか分かりません。あなたが結果を保存していない場合、あなたは '\ n'を取り除くことから何を得ているのですか? – MotKohn

+1

最初の行の繰り返しから戻ってきます... – schwobaseggl

+0

私はそれがヘッダーをスキップすることを望んでいました。 – bigd

答えて

1

1行のヘッダの後にすべてのファイルを読む:

def open_grades_file(filename): 
    '''(str) -> (file) 

    Open filename, read past its one-line header and 
    return file. 
    ''' 
    file = open(filename, 'r') 
    file.readline() 

    return file 

# read all file past its one-line header 
f = open_grades_file(filename).read() 

print(f) 

が印刷されます:

Smith, Joe,9911991199,smithjoe9,99,88,77,66 
Ash, Wood,9912334456,ashwood,11,22,33,44 
Full, Kare,9913243567,fullkare,78,58,68,88 
+0

これはどうやってテストするのですか? F = open_grades_file(ファイル名) f.readline() トレースバック(最新の呼び出しの最後): Pythonシェル、プロンプト4、ライン1 builtins.AttributeError: 'str' はオブジェクトが属性 'readlineの' がありません。私はそれをテストするときにそれを得る – bigd

+0

あなたの完全なコードをここにコメントに載せてください。あなたの質問を編集してください。 –

+0

今すぐお試しください!それが動作します。 –

1

を私はあなただけを取得しようとしている場合は、あなたが何かを返す必要がわかりませんコンソールに印刷されたものや変数を更新する必要がありますが、この単純な関数はすべての行をコンソールに順に出力します。

def open_grades_file(filename): 
    with open(filename, 'r') as f: 
     for line in f: 
      print(line.rstrip('\n')) 

あなたがしようとしていることに多くのコンテキストを提供できる場合は、私はより良い回答を形成できます。

最初の行を除くすべての行を印刷する場合は、真/偽の変数を使用して、最初の行をスキップすることができます。

このような何か:

x = False 

def open_grades_file(filename): 
    global x 
    with open(filename, 'r') as f: 
     for line in f: 
      if x == True: 
       print(line.rstrip('\n')) 
       return line.rstrip('\n') # this return line should work for you. Though I am not sure what its for in your case. 
      else: 
       x = True # sets x to true after the first line is read. 
    x = False # resets for next use of the function 

open_grades_file("data") 
+0

私は1行のヘッダーを過ぎて読んでいますが、リターンを使ってどうすればいいですか? – bigd

+0

@bigd私はあなたのために働くかもしれない何かで自分の答えを更新しました –

+0

どうすれば返事を使ってやることができますか? – bigd

2

必要に応じて機能が実際にそのドキュメント文字列、使用に対応するために:

def open_grades_file(filename): 
    '''(str) -> file 

    Open filename, read past its one-line header and 
    return the open file. 
    ''' 
    file = open(filename, 'r') 
    file.readline() 
    return file 

しかし、それは行うには非常に奇妙なことだが、このような機能は、でしょうもっと平凡でなければなりません:

関連する問題