2015-04-06 4 views
0

У меня есть следующий код:python Список файлов с пробелами

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

def onepath(archivo): 
     logging.basicConfig(filename=salida,filemode="w", format='%(message)s', level=logging.DEBUG) 
     for filename in (file for file in os.listdir(archivo)): 
       with open(filename) as checkfile: 
         logging.info("MD5 " + "(%s) = " % filename + hashlib.md5(checkfile.read()).hexdigest()) 

Я читал о методе shlex, но не знаю, как я могу реализовать.

Вы можете мне помочь?


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

files_destino = [f for f in os.listdir(os.path.join(sys.argv[1].strip()))] 
 
for i in files_destino: 
 
       print i 
 
       subprocess.call(["cp","-v", "%s" % i,"/tmp/"])

В шоу оболочки:

bash-3.2$ ./comodin.py ./espacio/ 
 
Boxx view.pdf 
 
cp: Boxx view.pdf: No such file or directory 
 
hola.txt 
 
hola.txt -> /tmp/hola.txt 
 
bash-3.2$

+0

Почему «пробелы» в кавычках? – KSFT

+0

Извините. Написание вопросов здесь :) – x1c70r

+0

Вы имеете в виду файлы, содержащие символ U + 0020? Почему это важно? – KSFT

ответ

0
def onepath(archivo): 
    logging.basicConfig(filename=salida,filemode="w", format='%(message)s', level=logging.DEBUG) 
    for filename in os.listdir(archivo): 
     filepath = os.path.join(archivo, filename) 
     with open(filepath) as checkfile: 
      logging.info("MD5 " + "(%s) = " % filename + hashlib.md5(checkfile.read()).hexdigest()) 
+0

Спасибо @Rain Lee, это дало идею, но все еще с недостатком. – x1c70r

+0

Чтобы скопировать файлы, вы должны использовать shutil.copy (src, dst) вместо использования подпроцесса с системной командой «cp». Аналогично, src, dst может быть подготовлен с помощью os.path.join (sys.argv [1], filename) –

+0

Я буду работать. Но «cp» это был пример здесь, чтобы указать на обработку имен файлов с пробелами (поскольку Unix требует файлы со слэшами перед пробелами. Цель состоит в том, чтобы заменить «cp» на строку «hashlib.md5 (checkfile.read()) .hexdigest()) ", чтобы вытащить MD5. – x1c70r

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

  • Нет связанных вопросов^_^