2012-01-14 1 views
1

pythonのdocsは次のように言っています:オブジェクトの長さ(アイテムの数)を返します。引数はシーケンス(文字列、タプルまたはリスト)またはマッピング(辞書)です。len関数は実際にファイルに対してどのように機能しますか?

コード:ファイルの

from sys import argv 

script, from_file = argv 

input = open(from_file) 
indata = input.read() 

print "The input file is %d bytes long" % len(indata) 

内容: ワンツースリー

私は出力として取得し、この単純なプログラムで実行時:入力ファイル

14バイトの長さ

Qutestion:

ファイルが11文字(1つ2つ3)しか書かれていないと、11バイトだけでなく14バイトも返すことができますか?私がs = "One two three"と入力してlen(s)と入力すると、pythonのインタプリタは13になるので、私は非常に混乱します。

+3

スペースはファイルにどのように格納されていると思いますか?マジック? –

+2

スペースも文字です。 –

答えて

7

"ワンツースリー" は確かに13文字(11文字+ 2つのスペース)です。

>>> open("file.txt", 'w').write("one two three") 
>>> len(open("file.txt").read()) 
13 

ほとんどの場合、あなたは私はあなたのコードを使用して、コンテンツによってに類似したファイルを作成した14

+0

はい、Geditがスペースを追加していて、14文字がどこにあったかのようです。私を助けてくれてありがとう。 – 0101amt

2

ワンツースリー

1 = 3つの文字

2 = 3文字

3 = 5文字

、あなたがtwo spacesを持っているよりも。合計で13文字です。

ファイルから読み込む場合は、ファイル内に余分にspaceがあります。したがって、14文字です。

あなたのPythonインタプリタでは次の操作を行います。

st = " " 
len(st) 

出力= 1

1

を説明終了行、のための余分な文字を持っています。実行結果:実際には "One two three"ファイルに余分な印刷不可能な文字があります。それは唯一の説明です。スペースや改行 - 最も目に見えるもの。

関連する問題