我有一个Python脚本,该脚本正在使用PyPDF2将pdf合并在一起并将它们输出到另一个文件夹中。 目前,我正在尝试在本地计算机(Windows 10)上运行它。
如果我从终端运行该脚本,它将pdf合并在一起,就可以很好地看到它。
但是,当我从服务器运行脚本时,它仍然运行,但是没有创建合并的pdf。我知道脚本可以运行,因为$output
变量从脚本解析为打印的名称变量。
正在从Deliveries.php
文件中调用脚本
因此,基本上该脚本将运行,但不会编写:(
。
我正在尝试使用php运行脚本。
$command_text = 'python '.BASEPATH.'../application/controllers/scripts/merge.py';
$command = escapeshellcmd($command_text);
$output = shell_exec($command);//Returns the printed 'name' variable from the script
脚本是:
import os
import time
from PyPDF2 import PdfFileMerger
name = int(time.time())
name = str(name) + '_1.pdf'
print(name)//The returned variable
files = os.listdir("staging")
pdfs = []
for file in files:
pdfs.append("staging/" + file)
merger = PdfFileMerger()
for pdf in pdfs:
merger.append(open(pdf, "rb"))
with open("here/"+name, "wb") as fout:
merger.write(fout)
我想这是一个权限问题,但是我不确定如何解决它。
已解决
我认为它与codeigniter 3有关,但是从根本上讲,我不得不引用与根文件夹有关的目录。
import os
import time
from PyPDF2 import PdfFileMerger
name = int(time.time())
name = str(name) + '_1.pdf'
# print(name)
files = os.listdir('application/controllers/scripts/staging')
pdfs = []
for file in files:
pdfs.append("application/controllers/scripts/staging/" + file)
merger = PdfFileMerger()
for pdf in pdfs:
merger.append(open(pdf, "rb"))
with open("../assets/pdfs/"+name, "wb") as fout:
merger.write(fout)