Кто-то предложил мне создать программу, которая сортирует их изображения по папкам в зависимости от месяца, когда они были взяты, и я хочу сделать это в одну строку (я знаю, это неэффективно и нечитабельно, но я все еще хочу это сделатьпотому что однострочные - это круто)
Мне нужен цикл for, чтобы выполнить это, но я знаю только один способ использовать цикл for в одной строке - это понимание списка, так что я это сделал, но он создаетпустой список, и ничего из этого списка не печатается.
Я переименовываю файл в созданный месяц + оригинальное имя файла (например: bacon.jpg --> May\bacon.jpg
)
Вот мой код (Python 3.7.3):
import time
import os.path
[os.rename(str(os.fspath(f)), str(time.ctime(os.path.getctime(str(os.fspath(f))))).split()[1] + '\\' + str(os.fspath(f))) for f in os.listdir() if f.endswith('.jpg')]
и более читаемая версия без понимания списка:
import time
import os.path
for f in os.listdir():
fn = str(os.fspath(f))
dateCreated = str(time.ctime(os.path.getctime(fn)))
monthCreated = dateCreated.split()[1]
os.rename(fn, monthCreated + '\\' + fn)
Является ли понимание списка плохим способомсделай это?Кроме того, есть ли причина, по которой, если я распечатываю список, это []
вместо [None, None, None, None, None, (continuing "None"s for every image moved)]
?
Обратите внимание: я понимаю, что это неэффективно и является плохой практикой.Если бы я делал это для других целей, а не просто для развлечения, чтобы посмотреть, смогу ли я это сделать, я бы, очевидно, не пытался сделать это в одну строку.