2012-01-14 59 views
1

python文档说:返回一个对象的长度(项目数量)。参数可以是一个序列(字符串,元组或列表)或映射(字典)。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个字符(一个两个三)len如何返回我14字节,而不仅仅是简单的11?(什么是字节顺便?)在python解释器,如果我键入s =“一二三”,然后len(s)我得到13,所以我很困惑。

+3

您如何看待空间存储在文件中?魔法? – 2012-01-14 20:25:55

+2

空格也是字符。 – 2012-01-14 20:31:32

回答

7

“一二三”,实为13个字符(11个字母+ 2位)。

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

最有可能你的底线,它通过内容解释了14

+0

是的,好像Gedit增加了一个空间,这是14个字符来自的地方。非常感谢你帮助我。 – 0101amt 2012-01-14 21:19:52

2

一二三

一个= 3个字符

2 = 3个字符

3 = 5个字符

和比你有two spaces。所以共有13个字符。

从文件读取时,在您的文件中有一个额外的space因此有14个字符。

在Python解释这样做:

st = " " 
len(st) 

输出= 1

1

我用你类似的代码,并创建了文件到您的一个额外的字符。运行结果:确实在“One two three”文件中有额外的不可打印字符。这是唯一的解释。空间和分界线 - 寻找最显而易见的东西。