2016-04-07 2 views
0

Извините заранее, как Im полный noob с python.Соответствующие файлы с sftp.listdir

Im написать программу, которая должна выполнить следующие действия: Подключается к sftp и сравнивает соответствие файлов в каталоге sftp со списком файлов, которые Im передают в аргумент. Im передает список файлов в FILE.

Так что если я

FILES=sftp.listdir('/path/') 
for F in FILE: 
    if F not in FILES: 
     do something 

Im испытывает трудность согласования 2, потому что именование в

файла является XXX_NNNNNN_YYYYMMDD_.1.txt

в то время как

ФАЙЛОВ именование является XXX_NNNNN_YYYYMMDD_1.txt.ts<NNNNNNNNNN>.txt <NNNNNNNNNN> это время POSIX с удаленного сервера

+1

Кроме того, имена переменных всех шапок (в отличие от постоянных имен) противоречат PEP-8. См. Https://www.python.org/dev/peps/pep-0008/ для соглашений стилей, применимых к коду Python. –

+0

... также, когда вы говорите «список файлов [...], переходящий в аргумент» - как вы передаете * список * в один аргумент? Это действительно список аргументов? Является ли это выражением glob-style/fnmatch? Разделен ли он или разграничен? –

+0

... во всяком случае, какова ваша цель? Чтобы сопоставить любой файл с префиксом аргумента, который вы указали, с любым суффиксом, соответствующим '[.] Ts [0-9] + [.] Txt'? –

ответ

0
files = sftp.listdir("/path/") 
truncatedFilenames = set() 
for fn in files: 
    parts = fn.split(".") 
    ## re-join just the first 2 parts 
    truncatedFilenames.add(".".join(parts[:2])) 
for f in otherFileList: 
    if f not in truncatedFilenames: 
     ## do something 
+0

Не использовал бы 'rsplit()' больше смысла, чтобы избежать необходимости входить в содержимое слева? –

+0

У меня есть еще одна проблема. В файлах, которые я ищу на ftp, если это хорошо, расширение будет .fileaccept, если его плохое будет .filereject. Мне нужно, чтобы он сказал ПРИНЯТЬ ИЛИ ОТКАЗАТЬСЯ на основе расширения. – Steve

+0

Или просто найдите файлы с расширением .fileaccept. – Steve

Смежные вопросы