Найти - Пользователи
Полная версия: pdf принтер
Начало » Python для новичков » pdf принтер
1
wampir
Доброво времени суток.

Есть виртуальный принтер на питоне, хорошо работает формирует файлы раскладывает по папкам.
Есть проблема - хочу научить его в папку класть не кучу *.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. не обращайте внимания на большое количество переменных
wampir
Может всё таки кто нибудь знает в чем проблема?

Проблема еще в том что в код приведённый ниже работает (в отдельном скрипте) но после втавки в в скрипт-принтер работать перестаёт

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 = ’'
wampir
Всё спасибо проблема решилась ударом в бубен
boris_blade
Так а что именно-то сделал?Интересно же
wampir
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)


конечный вариант кода
просто нужно внимательней читать описание функций
wampir
в принципе коменты убрать и лишний текст и будет еще меньше (переменные args и test не нужны)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB