2016-03-28 2 views
1

Я автоматизирую некоторые утомительные задачи оболочки, в основном конверсии файлов, в виде тупой силы с помощью os.system вызовов (Python 2.7). Однако по какой-то причудливой причине мой запущенный интерпретатор, похоже, не может найти файлы, которые я только что создал.python: невозможно найти файлы в недавно измененном каталоге (OSx)

Пример код:

import os, time, glob 

# call a node script to template a word document 
os.system('node wordcv.js') 

# print the resulting document to pdf 
os.system('launch -p gowdercv.docx') 

# move to the directory that pdfwriter prints to 
os.chdir('/users/shared/PDFwriter/pauliglot') 

print glob.glob('*.pdf') 

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

То же самое происходит с

pdfs = [file for file in os.listdir('/users/shared/PDFwriter/pauliglot') if file.endswith(".pdf")] 
print pdfs 

Я проверил вручную, и ожидаемые файлы на самом деле, где они должны быть.

Кроме того, у меня создалось впечатление, что os.system заблокирована, но на всякий случай это не так, я также застрял там time.sleep(1), прежде чем искать файлы. (Это более чем достаточно времени для завершения других задач.) Все еще ничего.

Хм. Помогите? Благодаря!

ответ

0

Вы должны добавить ожидание после звонка в launch. Запуск вызовет задачу в фоновом режиме и вернется к завершению печати документа. Вы можете либо ввести произвольные операторы sleep, либо, если хотите, вы также можете проверить наличие файла, если знаете, каким будет ожидаемое имя файла.

import time 
# print the resulting document to pdf 
os.system('launch -p gowdercv.docx') 
# give word about 30 seconds to finish printing the document 
time.sleep(30) 

Альтернатива:

import time 
# print the resulting document to pdf 
os.system('launch -p gowdercv.docx') 
# wait for a maximum of 90 seconds 
for x in xrange(0, 90): 
    time.sleep(1) 
    if os.path.exists('/path/to/expected/filename'): 
     break 

Ссылка на потенциально нуждающихся в более чем 1 второй ждать here

+0

ничего себе, это действительно было так просто. Теперь я чувствую себя немой. :-) благодаря! –