2012-09-25 1 views
5
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を剥がしたくないと思っていません。os.path.getsizeは最後にLを持つファイルサイズを報告します、なぜですか?

辞書に追加せずに実行すると、ファイルサイズは392に戻ります。

+2

おそらく、ファイルサイズが長くなっています。 – xbonez

+0

@xbonez - 答えとして投稿する - たぶん、* long *実際の*が何であるかを簡単に説明する。 – mgilson

+0

@Matthew - ちょっと好奇心が強い、どんなOSがこれ? – mgilson

答えて

8

これは、表示されるのはインタラクティブモードであるか、文字列表現がrepr()である場合のみです。 ziggが書いたように、あなたは単にそれを無視することができます。これを実装の詳細と考えてください。通常のintとlong intの間に差をつけることが重要だったのは、たぶん有用なことでした。 Python 3では、例えばLはありません。

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

お知らせのPython 2.7によってLが、Pythonの3.2によると類似何も:intがどんなに大きなintです。

+0

ああ、そうです。それは完璧な意味合いがあります。初心者として、私はPy3を勉強するのか、2.7で続けるのですか? – Matthew

+0

それほど重要ではありません。重要なことは同じです。しかし、可能であれば、両方を試してみることをお勧めします。私の推測では、Python 3がすぐに勝つということです。 http://getpython3.com/diveintopython3/strings.htmlを見てください。文字列は最も顕著な違いの1つです。 Python 3はより論理的ですが、最近ではPython 2.6が多く使われています。 Python 2.7は間にあります。 – pepr

7

末尾のLは、longを意味します。あなたは実際にそれを持っていますが、にはdictが表示され、値の印刷可能な表現が表示されます(Lの表記を含みます)。ただし、longを印刷すると、番号だけが表示されます。

あなたはほとんど確実に後ろから取り除くことを心配する必要はありませんL; intと同じように、すべての計算でlongを使用することができます。

+1

私の+1は公平ではないでしょう:) – pepr

0

それは本当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 
関連する問題