11
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.

4

3 回答 3

13

这仅显示或在交互模式下或当您通过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
>>>

请注意LPython 2.7 中的 ,但 Python 3.2 中没有类似的。

于 2012-09-25T20:47:47.320 回答
8

尾随L意味着你有一个long. 您实际上总是拥有它,但是printing adict将显示值的可打印表示,包括L符号;但是,打印 along本身只显示数字。

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

于 2012-09-25T19:57:05.150 回答
2

这是 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
于 2013-04-04T19:42:30.770 回答