Нет, это похоже рекомендуемый путь для вычисления размера каталога, соответствующий метод, включенный ниже:
public static long DirSize(DirectoryInfo d)
{
long size = 0;
// Add file sizes.
FileInfo[] fis = d.GetFiles();
foreach (FileInfo fi in fis)
{
size += fi.Length;
}
// Add subdirectory sizes.
DirectoryInfo[] dis = d.GetDirectories();
foreach (DirectoryInfo di in dis)
{
size += DirSize(di);
}
return size;
}
Вы звонили бы с корнем как:
Console.WriteLine("The size is {0} bytes.", DirSize(new DirectoryInfo(targetFolder));
..., где targetFolder
размер папки для вычисления.
Чтобы просто повторить одну и ту же букву 10 раз:
string_val = "x" * 10 # gives you "xxxxxxxxxx"
И если вам нужно что-то более сложное, например n
случайные строчные буквы, это все равно всего одна строка кода ( без учета операторов импорта и определения n
):
from random import choice
from string import ascii_lowercase
n = 10
string_val = "".join(choice(ascii_lowercase) for i in range(n))
Первые десять строчных букв - это строка.lowercase [: 10]
(конечно, если вы ранее импортировали стандартный библиотечный модуль строка
; -).
Другие способы «сделать строку из 10 символов»: 'x' * 10
(все десять символов будут строчными x
s ;-), ''. Join (chr (ord ('a') + i) for i in xrange (10))
(снова первые десять строчных букв) и т. Д .; -).
, если вам нужны любые буквы:
'a'*10 # gives 'aaaaaaaaaa'
, если вам нужны последовательные буквы (до 26):
''.join(['%c' % x for x in range(97, 97+10)]) # gives 'abcdefghij'
Почему «одна строка»? Вы можете поместить что угодно в одну строку.
Предположим, вы хотите, чтобы они начинались с 'a' и каждый раз увеличивались на один символ (с переносом> 26), вот строка:
>>> mkstring = lambda(x): "".join(map(chr, (ord('a')+(y%26) for y in range(x))))
>>> mkstring(10)
'abcdefghij'
>>> mkstring(30)
'abcdefghijklmnopqrstuvwxyzabcd'
Если вы можете использовать повторяющиеся буквы, вы можете использовать оператор *
:
>>> 'a'*5
'aaaaa'