Вы можете определить свою собственную функцию для сокращения кода, и это также хорошо для повторного использования:
def create_dir(name):
try:
os.makedirs(name)
except FileExistsError:
pass
def fileSort(day, month, year, file):
global filewritten
create_dir(togoto + '/' + year)
create_dir(togoto + '/' + year + '/' + month)
create_dir(togoto + '/' + year + '/' + month + '/' + day)
try:
shutil.move(path + '/' + file, togoto + '/' + year + '/' + month + '/' + day + '/' + file)
filewritten += 1
except FileExistsError:
pass
Существуют специальные суффиксы для long
(например, 39832L
), float
(например, 2.4f
) и double
(например, -7.832d
).
Если суффикса нет, и это интегральный тип (например, 5623
), предполагается, что он int
. Если это не целочисленный тип (например, 3.14159
), предполагается, что он равен double
.
Во всех других случаях ( байт
, ] short
, char
), вам нужен приведение, так как нет конкретного суффикса.
Спецификация Java допускает как суффиксы верхнего, так и нижнего регистра, но версия верхнего регистра для длинны
s является предпочтительным,
Я надеюсь, что вы не возражаете против небольшой касательной, но подумал, что вам может быть интересно узнать это помимо F
(для поплавка), D
(для двойного) и L
(для длинного), было сделано предложение добавить суффиксы для байтов
и коротких
- Y
и S
соответственно. Это исключило бы необходимость преобразования в байты при использовании литерального синтаксиса для байтовых (или коротких) массивов. Цитирую пример из предложения:
ОСНОВНАЯ ВЫГОДА: Почему платформа лучше, если предложение будет принято?
грубый код, например
byte [] stuff = {0x00, 0x7F, (byte) 0x80, (byte) 0xFF};
может быть перекодирован как
byte [] ufum7 = {0x00y, 0x7Fy, 0x80y, 0xFFy};
Джо Дарси наблюдает за Project Coin для Java 7, и его блог был простым способом отследить эти предложения.
Это литералы и описаны в разделе 3.10 спецификации языка Java.
Рассмотрим:
long l = -1 >>> 1;
против
int a = -1;
long l = a >>> 1;
Теперь вы ожидаете, что беспокойные фрагменты кода будут давать одинаковое значение переменной л
. Поэтому нам нужно, чтобы выражение для литералов int
было выполнено как int
s.
Кажется, это было бы хорошо есть, потому что (я предполагаю), если бы вы могли укажите номер, который вы вводите в короткий, то Java не придется бросьте его
Так как синтаксический анализ литералов происходит во время компиляции, это абсолютно не имеет отношения к производительности. Единственная причина, по которой было бы неплохо иметь короткие короткие
и байтовые суффиксы
, заключается в том, что это приводит к более компактному коду.