Os.path.getsize сообщает размер файла с L в конце, почему?

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.

Ответ 1

Это отображается только в интерактивном режиме или когда вы получаете строковое представление через 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
>>>

Обратите внимание на L на Python 2.7, но ничего похожего на Python 3.2.

Ответ 2

Конечная L означает, что у вас есть long. У вас на самом деле это всегда есть, но print ing a dict будет отображать печатные представления значений, включая нотацию L; однако сама печать long показывает только номер.

Вам почти наверняка не нужно беспокоиться о том, чтобы скрыть конечный L; вы можете использовать long во всех своих вычислениях так же, как вы использовали бы int.

Ответ 3

Это верный ответ, но если вам действительно нужно, вы можете сделать функцию 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