2016-08-16 2 views
-3
number = int(input('Enter Line: ')) 
f = open('path.txt','r') 
text = f.readline(number) 
print(text) 

"path.txt" はこのようになりませんファイル:関係なく、あなたが入力した内容番号、は、正しい文字列を印刷しない

まだ

LINE1
LINE2
LINE3が、それはまだ返されますLINE1 。

+5

'readline()'の引数は何ですか? –

+0

はありますか? –

答えて

0

f.readline()を間違って使用しています。このメソッドを渡すと、特定の行番号が返されません。このメソッドは常に次の行(この例では#1行目)を読み込んで返し、実際には部分文字列として機能しています。

f.readline()ファイルから1行を読み取ります。文字列の末尾に改行文字 (\ n)が残され、ファイルが改行で終わらない場合は、ファイルの最後の 行で省略されます。 https://docs.python.org/3/tutorial/inputoutput.html#methods-of-file-objects

私はあなたが本当に探している使用量がこれですと信じて:

number = int(input('Enter Line: ')) 
f = open('path.txt','r') 
lines = f.readlines() 
print(lines[number]) 

f.readlines()は、あなたがインデックスすることができ、すべての行を読み取り、返します。

See live example

0

私は、ドキュメント、Pythonの男ではないんだけど、簡単に見ているreadlineのがまさにそれ...それはファイルの先頭から1行ずつ読み込むない私に語りました。

これを試してみてください:

f = open('path.txt','r') 
print(f.readline()) 
print(f.readline()) 

この出力すべき:readlineのために渡された

LINE1 LINE2

パラメータは読み込むバイト数ではなく、行番号です。

これは役立つかもしれない:http://www.tutorialspoint.com/python/file_readline.htm

-1

機能readline()(なし関数の引数が)したがって、ファイルから1行を読み取り、あなたの文text = f.readline(number)は常にカーソル位置の行を返します。例えば

:あなたのケースのために

number = int(input('Enter Line: ')) 
f = open('path.txt','r') 
print f.readline(number) => print line1 
print f.readline(number) => print line2 

、私はあなたがすることができると思う:

number = int(input('Enter Line: ')) 
f = open('path.txt','r') 
lines = f.readlines() 
print lines[number] # if number is not greater than len(lines) 
1

f.readlines()は、ファイルが非常に大きい場合、それはすべて食べるようになる、メモリへのすべての行を読み込みますメモリ。だから私は薄く、あなたは次のコードを使用することができます。

for line_num, line in eneumerat(lines, 1): 
    if line_num == number: 
     print(text) 
     break 
関連する問題