2015-07-30 3 views
0

У меня сложная проблема. Мне нужно применить определенную команду под названием xRITDecompress к списку файлов с расширением -C_, и я должен сделать это с помощью Python.применить команду к списку файлов в python

К сожалению, эта команда не работает с групповыми символами, и я не могу сделать что-то вроде:

os.system("xRITDecompress *-C_") 

В принципе, я мог бы написать вспомогательный Баш скрипт с for цикла и назвать его в моем питона программа. Тем не менее, я бы не хотел полагаться на вспомогательные файлы ...

Что было бы лучшим способом сделать это в программе python?

ответ

2

Вы можете использовать glob.glob(), чтобы получить список файлов, на которых вы хотите запустить команду, а затем для каждого файла в этом списке, выполните команду -

import glob 
for f in glob.glob('*-C_'): 
    os.system('xRITDecompress {}'.format(f)) 

От documentation -

Модуль glob находит все пути, соответствующие указанному шаблону, в соответствии с правилами, используемыми оболочкой Unix.

Если на _ (подчеркивание), вы хотите, чтобы соответствовать одному символу, вы должны использовать - ? вместо этого, как -

glob.glob('*-C?') 

Пожалуйста, обратите внимание, glob поиск будет только в текущем каталоге, но в соответствии с что вы хотели с оригинальной пробной версией, кажется, что вы, возможно, хотите.


Вы также можете, хотите посмотреть на subprocess модуль, это более мощный модуль для выполнения команд (нерестовые процессы). Пример -

import subprocess 
import glob 
for f in glob.glob('*-C_'): 
    subprocess.call(['xRITDecompress',f]) 
+0

Спасибо, я попробую wi го подпроцесса. Подчеркивание является частью расширения «-C_»: после распаковки окончание имени файла становится «-__». – urgeo

+0

Хорошо, измените код в примере подпроцесса. –

+0

@urgeo Кроме того, я хотел бы предложить, если бы ответ был полезен для вас, вы должны принять их, нажав на галочку на левой стороне (в зависимости от того, что вам больше всего подходит), это было бы полезно для сообщества. –

0

Вы можете использовать glob.glob или glob.iglob получить файлы, которые соответствуют заданному шаблону:

import glob 

files = glob.iglob('*-C_') 
for f in files: 
    os.system("xRITDecompress %s" % f) 
+0

Спасибо, вот что я искал! – urgeo

0

Просто используйте glob.glob для поиска и os.system для выполнения

import os 
from glob import glob 
for file in glob('*-C_'): 
    os.system("xRITDecompress %s" % file) 

Я надеюсь, что это удовлетворяет вашему вопросу

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