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