os.path.getsize在结束时报告有升的文件大小,为什么呢?(os.path.getsize

2019-07-31 22:40发布

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

Answer 1:

这是唯一的或在交互模式或当你通过得到的字符串表示显示repr() 作为zigg写道,你可以简单地忽略它。 认为这是一个实现细节。 这也许是有用的时候,当它进行正常的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
>>>

注意L被Python 2.7,但没有被Python 3.2类似。



Answer 2:

尾部L意味着你有一个long 。 实际上,你总是有它,但print荷兰国际集团一个dict将显示值的可打印表示,包括L符号; 然而,打印long本身只显示号码。

你几乎肯定不需要担心剥离尾部L ; 你可以使用一个long在所有的计算就像你使用int



Answer 3:

这是真正的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


文章来源: os.path.getsize reports a filesize with an L at the end, why?