boltayka
Через командную строку os.listdir, цикл и raw_input кодировку путают… sad
Пробовал encode, decode, но что-то не очень в них вдуплил… Если кому не лень, покажите на примере моего кода, сортирующего файлы по папкам…
Вы бы вывод показали или ошибку, если таковая имеется
Если я все правильно понимаю, то проблемы возникают при вводе папки, в имени которой есть русские буквы?
o7412369815963
в качестве палок (сепаратора) лучше использовать os.sep, что-б мульти платформенно было…
собирать путь к файлу целесообразнее функцией os.path.join
вот, слегка поправленный код
o7412369815963, который точно будет работать в консоли windows, но скорее всего не заработает в IDLE ():
import os
def main():
folder = raw_input('folder:')
col = int(raw_input('col:'))
if not isinstance(folder, unicode):
folder = folder.decode("cp866") # кодировка по умолчанию консоли MS Windows
for i, f in enumerate(s for s in os.listdir(folder) \
if os.path.isfile(os.path.join(folder, s))):
f2 = os.path.join(folder, "%d" % (i // col))
if not os.path.exists(f2): os.mkdir(f2)
os.rename(os.path.join(folder, f), os.path.join(f2, f))
если же распихать нужно не только файлы, но и папки, то:
import os, shutil
def main():
folder = raw_input('folder:')
col = int(raw_input('col:'))
if not isinstance(folder, unicode):
folder = folder.decode("cp866") # кодировка по умолчанию консоли MS Windows
for i, f in enumerate(s for s in os.listdir(folder)):
f2 = os.path.join(folder, "%d" % (i // col))
if not os.path.exists(f2): os.mkdir(f2)
shutil.move(os.path.join(folder, f), os.path.join(f2, f))