Форум сайта python.su
Доброво времени суток.
Есть виртуальный принтер на питоне, хорошо работает формирует файлы раскладывает по папкам.
Есть проблема - хочу научить его в папку класть не кучу *.pdf фалов а один путём соединения их в один файл с последующей очисткой лишних, но не могу соеденить их а точнее не отрабатывают функции os.popen и subprocess.Popen, subprocess.call
Вот пример кода здесь несколько вариантов (просто пробовал по разному)
fpath = ‘/tmp/pdf’
text = ‘“gs” “-dNOPAUSE” “-dNODISPLAY” “-dDEVICE=pdfwrite” “-sOutputFile=/tmp/pdf/out_file.pdf” “-dBATCH”’
test = “gs -dNOPAUSE -dNODISPLAY -dDEVICE=pdfwrite -sOutputFile=/tmp/pdf/out_file.pdf -dBATCH”
sim = ‘ “’
sin = ‘”’
comm = ‘ ’
num = 0
name = ‘ ’
fol = fpath + ‘/’ + folder + ‘/’
logf.write(fol + ‘\n’)
for fname in os.listdir(fol):
text = text + sim + fol + fname + sin
test = test + comm + fol + fname
num = num + 1
logf.write(test+ ‘ ’+str(num)+' ‘+’\n')
if num > 1:
args = shlex.split(test)
subprocess.call(args)
logf.write(str(args))
os.popen(text)
for delf in os.listdir(fol):
name = fol + delf
logf.write(name + ‘\n’)
# os.remove(name)
# cop = ‘“mv” “/tmp/pdf/out_file.pdf” “/tmp/pdf/%s/new_out_file.pdf”’%folder
cop = ‘“cp” “/tmp/pdf/out_fole.pdf” “/tmp/pdf/%s/new_out_file.pdf”’%folder
os.popen(cop)
# os.remove('/tmp/pdf/out_file.pdf')
logf.close()
P.S. не обращайте внимания на большое количество переменных
Офлайн
Может всё таки кто нибудь знает в чем проблема?
Проблема еще в том что в код приведённый ниже работает (в отдельном скрипте) но после втавки в в скрипт-принтер работать перестаёт
fpath = ‘/tmp/pdf/’
stroca = ‘“gs” “-dNOPAUSE” “-sDEVICE=pdfwrite” “-sOutputFile=/tmp/pdf/out_file.pdf” “-dBATCH”’
sim = ‘ “’
sim2 = ‘”’
comm = “”
num = 0
name = ‘'
for fname in os.listdir(fpath):
if os.path.isdir(fname):
folder = fpath + fname + ’/'
comm = stroca
print folder
for tmp in os.listdir(folder):
if tmp != ‘out_pdf.pdf’:
num = num + 1
comm = comm + sim + fpath + fname + ‘/’ + tmp + sim2
print comm
if num >= 2:
args = shlex.split(comm)
os.popen(comm)
for tmp in os.listdir(folder):
name = folder + tmp
os.remove(name)
cop = ‘“mv” “/tmp/pdf/out_file.pdf” “/tmp/pdf/%s/new_out_file.pdf”’%fname
os.popen(cop)
#os.remove('/tmp/pdf/out_file.pdf')
print name
comm = ‘'
name = ’'
Офлайн
Всё спасибо проблема решилась ударом в бубен
Офлайн
Так а что именно-то сделал?Интересно же
Офлайн
fpath = ‘/tmp/pdf’
text = ‘“gs” “-dNOPAUSE” “-sDEVICE=pdfwrite” “-sOutputFile=/tmp/pdf/out_file.pdf” “-dBATCH”’
test = ‘gs -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=/tmp/pdf/out_file.pdf -dBATCH ’
sim = ‘ “’
sin = ‘”’
comm = ‘ ’
num = 0
name = ‘ ’
fol = fpath + ‘/’ + folder + ‘/’
#lg.write(fol + ‘\n’)
for fname in os.listdir(fol):
text = text + sim + fol + fname + sin
num = num + 1
test = test + fol + fname + comm
#lg.write(test + ‘\n’)
if num >= 2:
arg = shlex.split(text)
os.popen(text)
# command = “/tmp/pdf/out_pdf.py”
# os.system('%s'%test)
for delf in os.listdir(fol):
name = fol + delf
os.remove(name)
cop = ‘“mv” “/tmp/pdf/out_file.pdf” “/tmp/pdf/%s/new_out_file.pdf”’%folder
os.popen(cop)
конечный вариант кода
просто нужно внимательней читать описание функций
Офлайн
в принципе коменты убрать и лишний текст и будет еще меньше (переменные args и test не нужны)
Офлайн