Hello everybody,
I want to get the filesize of a folder and store it as a variable. So far I've manged to do so:
import os
def get_size(start_path = '.'):
total_size = 0
for dirpath, dirnames, filenames in os.walk(start_path):
for f in filenames:
fp = os.path.join(dirpath, f)
if not os.path.islink(fp):
total_size += os.path.getsize(fp)
return total_size
line = get_size()
print(line)
Now I want to expand on that so that, going from the end to beginning, after every 3 digits it adds a point.
For example, instead of 1515124421 I want it to look like 1.515.124.421
How can I do so?
(Jul-10-2022, 01:34 PM)AlphaInc Wrote: [ -> ]Hello everybody,
I want to get the filesize of a folder and store it as a variable. So far I've manged to do so:
import os
def get_size(start_path = '.'):
total_size = 0
for dirpath, dirnames, filenames in os.walk(start_path):
for f in filenames:
fp = os.path.join(dirpath, f)
if not os.path.islink(fp):
total_size += os.path.getsize(fp)
return total_size
line = get_size()
print(line)
Now I want to expand on that so that, going from the end to beginning, after every 3 digits it adds a point.
For example, instead of 1515124421 I want it to look like 1.515.124.421
How can I do so?
Alright, I got it myself. If anyone is interested in it:
#!/usr/bin/env python3
#Imports
import sys
import os
#Get filesize
def get_size(start_path ='.'):
total_size = 0
for dirpath, dirnames, filenames in os.walk(start_path):
for f in filenames:
fp = os.path.join(dirpath, f)
if not os.path.islink(fp):
total_size += os.path.getsize(fp)
return total_size
#Convert filesize
tmp_size = str(int(get_size()))[::-1]
#Reverse filesize
def convert_size(string, n):
with_asterisks = []
characters_scanned = 0
for character in string:
if characters_scanned == n:
with_asterisks.append('.')
characters_scanned = 0
characters_scanned += 1
with_asterisks.append(character)
return ''.join(with_asterisks)
#get final filesize
fnl_size = convert_size(tmp_size, 3)[::-1]
print(fnl_size)
#End
sys.exit()
If (which I think will be the case) this is too complex and there is a far easier method, please let me know :)
(Jul-10-2022, 03:15 PM)AlphaInc Wrote: [ -> ]If (which I think will be the case) this is too complex and there is a far easier method, please let me know :)
Congratulations, well done. But indeed there is an easier method: use an f-string and mark the type as "n" (number). But then you need to set the locale of your environment. (Not sure if this works also with Windows.)
PyDev console: starting.
Python 3.9.5 (default, Nov 23 2021, 15:27:38)
[GCC 9.3.0] on linux
import locale
locale.setlocale(locale.LC_ALL, '') # Get the locale from your OS
'nl_NL.UTF-8'
aa = 1234567890
print(f"{aa:n}")
1.234.567.890