Форум сайта python.su
0
Здравствуйте.
Есть список файлов:
tn120011.txt
tn120013.txt
tn120015.txt
tn120017.txt
Из него нужно скопировать файл с наибольшим номером.
Все на что меня хватило:
import os shutil glob files = glob.iglob(os.path.join(source_dir, "tn*.txt")) for file in files: shutil.copy(file, getcwd())
Офлайн
0
Решил задачу так
import os, shutil, glob source_dir = '/home/test/1/2/' files = glob.glob(os.path.join(source_dir, "tn*.txt")) listFile = [] for i in files: listFile.append(os.path.basename(i)[2:-4]) copyFile = 'tn'+max(listFile)+'.txt' os.chdir('/home/test/1') shutil.copy(os.path.join(source_dir, copyFile), os.getcwd())
Офлайн
857
>>> lst = ['tn120011.txt', 'tn120017.txt', 'tn120013.txt', 'tn120015.txt'] >>> name = max(lst, key=lambda i: int(i[2:i.rindex('.')])) >>> name 'tn120017.txt' >>>
>>> import re >>> >>> lst = ['tn120011.txt', 'tn120017.txt', 'tn120013.txt', 'tn120015.txt'] >>> >>> pat = re.compile(r'^tn(\d+)\.txt$') >>> name = max(lst, key=lambda i: int(pat.search(i).group(1))) >>> name 'tn120017.txt' >>>
Отредактировано py.user.next (Авг. 17, 2013 19:43:30)
Офлайн