关于python:os.path.getsize报告一个文件大小,结尾是L,为什么?

os.path.getsize reports a filesize with an L at the end, why?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import os, sys

def crawlLocalDirectories(directoryToCrawl):
    crawledDirectory = [os.path.join(path, subname) for path, dirnames, filenames in os.walk(directoryToCrawl) for subname in dirnames + filenames]
    return crawledDirectory

print crawlLocalDirectories('.')

dictionarySize = {}
def getSizeOfFiles(filesToMeasure):
    for everyFile in filesToMeasure:
        size = os.path.getsize(everyFile)
        dictionarySize[everyFile] = size
    return dictionarySize

print getSizeOfFiles(crawlLocalDirectories('.'))

每当这是跑,我得到的输出的{'example.py':392L},为什么?什么是安全的?我不想有strip我在最后的地方。

如果我运行它无adding它到一个字典,它是与filesize作为392回来的。


只有在交互模式下或通过repr()获得字符串表示形式时才会显示。正如Zigg所写,你可以忽略它。把这当作一个实现细节。当区分普通int和long int很重要时,它可能在时间上很有用。例如,在python 3中,没有L。无论有多大,int都是int:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
d:\>py
Python 3.2.1 (default, Jul 10 2011, 20:02:51) [MSC v.1500 64 bit (AMD64)] on win
32
Type"help","copyright","credits" or"license" for more information.
>>> a = 100000000000000000000000000000000000000000000
>>> a
100000000000000000000000000000000000000000000
>>> ^Z

d:\>python
Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win
32
Type"help","copyright","credits" or"license" for more information.
>>> a = 100000000000000000000000000000000000000000000
>>> a
100000000000000000000000000000000000000000000L
>>>

注意python 2.7中的L,但是python 3.2中没有类似的内容。


尾随的L表示你有一个long。实际上,您总是拥有它,但是使用dictprint将显示值的可打印表示,包括L表示法;但是,打印long本身只显示数字。

几乎可以肯定,您不必担心剥离尾随的L;您可以在所有计算中使用long,就像使用int一样。


这是正确的,但如果你真的需要你可以做int()函数,它也适用于大整数。

1
2
3
4
5
Python 2.7.3 (default, Jul 24 2012, 10:05:39)
[GCC 4.7.0 20120507 (Red Hat 4.7.0-5)] on linux2
>>> import os
>>> os.path.getsize('File3')
4099L

但是,如果自动放入函数int():

1
2
>>> int(os.path.getsize('File3'))
4099