2017-10-10 1 views
-1

ファイル拡張子とその数だけでなく、さまざまなディレクトリの各ファイル拡張子が消費する領域を計算しようとしています。pythonで各ファイル拡張子が消費するメモリを計算する

import os 
def count_all_ext (path): 
    res = {} 
    for root,dirs,files in os.walk(path): 
     for f in files : 
      if '.' in f : 
       e = f.rsplit('.',1)[1] 
       res[e] = res.setdefault(e,0)+1 
    return res.items() 
op= '\n'.join('%s:%d'%i for i in count_all_ext('/home')) 

次の出力は次のとおりです:

baseB:4 
code:100 
cache-6:55 
Xauthority:1 
baseA:4 
npmrc:1 
apmrc:1 
gz:186 
dbf:1 
lst:2 
markdown:10 
sqlite-shm:2 
vsixmanifest:4 
ttf:109 
pkl:31 
gitignore:8 
xml:46 
22:1 
la:9 
sublime-keymap:1 
cache:103 
jar:1 
ts:704 
desktop:3 
source:1 
sqlite3-journal:1 
TAG:1 
4:1 
usage:6 
oTN4k5:1 
bin:6 
docx:9 
rb:1 
woff:3 
db:17 
gpg-agent:1 
V2XO5Y:1 
dat:3 
fingerprint:4 
lz4:1 
converted-launchers:1 
bat:5 
bau:1 
pset:42 
name:2 
crt:8 
dll:42 
h:122 
cmd:2 
list:2 
xlb:2 
dic:1 
zsh-update:1 
editorconfig:4 
stderr:8 
sublime_session:1 
xls:1 
bak:1 
bond:108 
node:16 
56:3 
old:26 
babelrc:2 
locale:1 
cfg:3 
htm:1 
odt:1 
keyring:1 
gypi:1 
meta:2 
md~:1 
pma:2 
sqlite-journal:1 
odb:2 
patch:2 
todo:1 
tvc:1 
out:20 
tmp:4 
ps1:8 
stats:6 
icc:1 
zprofile:1 
dbt:1 
re:21 
3:1 
mozlz4:2 
7:9 
ics:3 
spec:9 
sys:1 
reg:3 
metadata:6 
dirs:1 
whl:2 
run:1 
asar:1 
jsonlz4:14 
tdb:4 
journal:2 
zshrc:1 
gradle:3 
little:2 
pub:1 
js:4336 
asc:1 
git:1 
key:12 
xbel:1 
properties:2 
bash:1 
eslintignore:1 
c:283 
zip:6 
idx:5 
lsup7I:1 
zcompdump:1 
un~:2 
vbs:1 
base:1 
dmrc:1 
Mdg80A:1 
sbstore:42 
pdf:18 
tmLanguage:11 
xlc:2 
py:483 
tgz:2 
gitkeep:2 
iml:2 
xz:1 
bashrc:1 
db-journal:3 
pf2:5 
localstorage:95 
yaml:8 
tmPreferences:4 
isrunning:1 
txt:287 
orig:2 
gvdb:1 
xpi:9 
php:12 
gitmodules:1 
log:49 
swo:1 
jshintrc:6 
stamp:2 
vxd:1 
fmt:1 
1vCfy0:1 
sock:2 
pb:32 
gif:3 
json:2128 
2:2 
js-20170612122310:1 
prl:9 
swp:2 
bash_logout:1 
final:1 
pl:1 
exe:21 
a:2 
sdv:1 
x86_64-pc-linux-gnu:1 
parentlock:2 
cson:8 
rcache:2 
6:1 
otf:29 
sublime-settings:1 
xinputrc:1 
gitconfig:1 
npmignore:84 
localstorage-journal:95 
gyp:1 
rst:11 
update-timestamp:1 
bnf:1 
png:2340 
db-shm:1 
info:1 
md:844 
js-20170816210634:1 
sublime-snippet:14 
tsv:1 
gpg:1 
sth:19 
mk:5 
yml:47 
sqlite-wal:2 
ino:1 
pem:4 
deb:3 
zsh:235 
pack:5 
zsh_history:1 
sqlite:24 
tar:1 
stdout:8 
jscsrc:1 
lock:3 
pro:1 
DB:4 
coffee:8 
jpg:23 
jamignore:1 
sample:72 
watchr:1 
jshintignore:1 
ini:14 
conf:17 
xcu:1 
sudo_as_admin_successful:1 
plist:1 
xsession-errors:1 
keystore:1 
nls:1 
bdic:1 
0:11 
1:8 
html:89 
5:10 
MZPZ5Y:1 
sqlite3:1 
pak:61 
config:1 
css:112 

は、だから私は、形式で出力したい 私は、次のコードによって、すべてのファイル拡張子とその数を取得することができました

file extension:<totalsize consumed> 
. 
. 
. 

上記のコードを操作して、各拡張機能で使用されるファイル拡張子とスペースを見つける方法。 ありがとうございます!

+0

のための参考資料、それは私がすることができる午前の作業要求 –

+0

@ivan_pozdeevですので、私は、オフトピックとして、この質問を閉じるために投票しています:ここで

はあなたが始めるために何かあります特定の拡張機能の値を取得しますが、すべての拡張機能で同じ値を得ることはできません!!従って初心者の助けを求める – Sjn73

+0

ファイル拡張子カウント '+ 1'を' os.stat(path).st_size'に置き換えてみてください。 ['os'](https://docs.python.org/3.3/library/os.html)と[' os.path'](https://docs.python.org/3.3/)を読み書きしてください。ライブラリ/ os.path.html)のモジュールページで、 'os.path.splitext(path)'のようなメソッドについて知ることができます。 – Harvey

答えて

3

os.statを調べることをお勧めします。この方法では、ファイルサイズをバイト単位で読み取ることができます。メガバイトのような他のサイズにしたい場合は、2つの間でいくつかの変換を行う必要があります。

import os 
def count_all_ext (path): 
    res = {} 
    for root,dirs,files in os.walk(path): 
     for f in files : 
      if '.' in f : 
       statinfo = os.stat(os.path.join(root,f)) 
       e = f.rsplit('.',1)[1] 
       res.setdefault(e,[]).append((statinfo.st_size)) 
    return res.items() 
op= '\n'.join('{}:{}'.format(key, array) for key,array in count_all_ext(r'C:\Users\user\.anaconda\navigator')) 
print(op) 

os.stat

+0

ニースの答え!また、f.rsplitの代わりにos.path.splitextを使用してください。 –

+0

@ Sjn73値を出力するときにsum(配列)が機能するか、ファイルをトラッキングするときに合計を保持してください。 – will7200

+0

@WilliamFlores:yeah used sum()メソッド、 助けてくれてありがとう! – Sjn73

関連する問題