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とlongintを区別することが重要な時期には、おそらく役に立ちました。Lたとえば、Python3にはありません。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によるものに注意してください。ただし、Python3.2によるものと同様のものはありません。

于 2012-09-25T20:47:47.320 に答える
8

末尾Lは、があることを意味しますlong。実際には常にそれを持っていますが、printaを実行すると、表記dictを含む値の印刷可能な表現が表示されます。ただし、それ自体をL印刷すると、数値のみが表示されます。long

ほぼ確実に、末尾の削除について心配する必要はありませんL。を使用するのlongと同じように、すべての計算でを使用できます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 に答える