Извините, не прочитал просто правила оформления постов(я так полагаю понятие читабельности-это оформление самого поста-код отдельно в тэгах,сообщения отдельно):
Видоизменю свой последний пост:
—————–
вот в краткости я понял сл:
функции:
1)os.path.realpath(path)-если мы в агрумент path укажим ссылку на какой-то файл,то она вообщем возвращает путь того файла,на который указывает ссылка,а не путь где сама ссылка расположена
2)os.path.join(path1, path2, …)-Объединяет пути path1 и path2 и т.д.
например:
os.path.join(‘c:\\’, ‘system\\apps\\Python\\’, ‘Python.app’)
возвратит нам:
‘c:\\system\\apps\\Python\\Python.app’
3)os.path.isdir(path)-Возвращает 1, если path указывает на папку
4)os.makedirs(path)-Работает аналогично функции mkdir(), но автоматически создает все необходимые промежуточные папки, т.е. не нужно специально создавать промежуточные файлы перед перемещением-достаточно просто создать весь путь куда переместить
5)dirname(path)-Возвращает имя каталога пути path.
например:
>>> os.path.dirname(‘c:\\system\\apps\\Python\\Python.app’)
‘c:\\system\\apps\\Python’
6)shutil.move(src, dst)
src-файл
dst-куда переместить файл
Примерно,правильно ли я составил скрипт:
import os, sys
import shutil
import time as _time
from datetime import datetime
ticks = lambda x: int(_time.mktime(x.timetuple()))
Примерно,правильно ли я составил скрипт:
import os, sys
import shutil
import time as _time
from datetime import datetime
ticks = lambda x: int(_time.mktime(x.timetuple()))
# генератор имен всех файлов в директории
def file_list(root):
join = os.path.join
islink = os.path.islink
for path, dirs, files in os.walk(os.path.abspath(root)):
for filename in files:
filename = join(path, filename)
if not islink(filename):
yield filename
# генератор имен файлов, соответствующих Вашим условиям
def file_filter(files, start, stop):
for fname in files:
stat = os.stat(fname)
if start <= stat.st_mtime <= stop:
yield fname, stat.st_size
def main(root, start, stop):
move_count = 0
for fname, size in file_filter(file_list(root), start, stop):
if not size:
f=os.path.realpath(fname)
dannie=f.read(10)
print dannie
dir=dirname(f)
os.makedirs(/arhiv/'+dir)
shutil.move(fname, /arhiv/'+dir)
move_count += 1
print("Всего перенесено {}".format(move_count))
if "__main__" == __name__:
# тут конечно же нужно сделать проверку на количество и качество
# переданных параметров, для этого есть модуль argparse - осваивайте
root = sys.argv[1]
start = ticks(datetime.strptime(sys.argv[2], "%d.%m.%Y"))
stop = ticks(datetime.strptime(sys.argv[3], "%d.%m.%Y"))
main(root, start, stop)
тогда как в примере:
если логи log1.ftr, log56.ftf,og33.trs были изменены между промежутком времени sys.argv и sys.argv, то
1)лог /temp/logi/PVM45/15012012/log1.ftr переместится в /arhiv/PVM1/13022011/log1.ftr
2)лог /temp/PVM45/15012012/log56.ftf переместится в /arhiv/PVM45/15012012/log56.ftf
3)лог /temp/PVM1/13022011/log33.trs переместится в /arhiv/PVM1/13022011/log33.trs
верно составил?