os.path.getsize报告最后带有L的文件大小,为什么?

时间:2012-09-25 19:43:24

标签: python dictionary filesize directory

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}的输出,为什么?什么是L?我不想在最后剥掉L。

如果我在不将其添加到词典的情况下运行它,它会将文件大小作为392返回。

3 个答案:

答案 0 :(得分:11)

仅显示或以交互模式显示,或者通过repr()获取字符串表示时。正如zigg所写,你可以简单地忽略它。考虑这个实现细节。在正常的int和long int之间做出区别很重要的时候,它可能很有用。例如,在Python 3中,没有L。无论多大,int都是int:

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没有类似的内容。

答案 1 :(得分:8)

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

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

答案 2 :(得分:1)

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

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():

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