- 締切済み
pythonのsubprocessにつきまして
いつも大変お世話になっております。 icevainと申します。 最近、pythonに挑戦し始めました。 やりたいことは、 pdfの用紙サイズをCSVファイルに出力することです。 Ghostscriptを使ってみたのですが、 期待どおりにはいきません。 ここから import subprocess cmd = r"C:\gs\gs9.56.1\bin\gswin64c.exe" \ + " -q" \ + " -sFile=" \ + r"D:\Program_factory\Python\_development\GGG\test.pdf" \ + " -dDumpMediaSizes " \ + r"C:\gs\gs9.56.1\lib\pdf_info.ps" \ + " > " \ + "SIZE.CSV" print(cmd) subprocess.run(cmd.split(),shell=True) ここまで 【実行結果】 SIZE.CSVが出力され、中身は下記となっておりました。 ここから Error: /invalidfileaccess in --file-- Operand stack: (D:\\Program_factory\\Python\\_development\\GGG\\test.pdf) (r) Execution stack: %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1990 1 3 %oparray_pop 1989 1 3 %oparray_pop 1977 1 3 %oparray_pop 1833 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- Dictionary stack: --dict:765/1123(ro)(G)-- --dict:0/20(G)-- --dict:75/200(L)-- --dict:18/128(L)-- Current allocation mode is local Last OS error: Permission denied Current file position is 15143 ここまで お分かりの方おりましたらご教授して頂けませんでしょうか。 よろしくお願いいたします
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- wormhole
- ベストアンサー率28% (1626/5665)
>ご指示のとおり試してみましたが、変化はないです 変化あるようですけど? 質問では >Last OS error: Permission denied だったのが#2の補足では >Last OS error: No such file or directory になっていますが。 pythonからghostscriptを呼び出すのはひとまず置いといて、 ghostscriptを直接起動しての確認をしませんか?
- _kappe_
- ベストアンサー率68% (1581/2304)
Ghostscriptの起動オプションに-dNOSAFERまたは-dDELAYSAFERを追加してください。どちらでも意味は同じです。 https://www.ghostscript.com/doc/current/Use.htmから引用します。 > If Ghostscript is started with -dNOSAFER or -dDELAYSAFER, PostScript programs are allowed to read, write, rename or delete any files in the system that are not protected by operating system permissions.
お礼
_kappe_さん こんばんは 情報ありがとうございます ご指示のとおり試してみましたが、変化はないです 引き続き試行錯誤をしてみます😞💦💦
補足
+ " -dDELAYSAFER" \ を追加 出力されたCSVの中身は、 ここから Error: /undefined in oget Operand stack: --nostringval-- --dict:0/0(L)-- Root Execution stack: %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1990 1 3 %oparray_pop 1989 1 3 %oparray_pop 1977 1 3 %oparray_pop 1833 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- Dictionary stack: --dict:773/1123(ro)(G)-- --dict:0/20(G)-- --dict:75/200(L)-- --dict:18/128(L)-- --dict:18/20(L)-- Current allocation mode is local Last OS error: No such file or directory Current file position is 15143 ここまで ご参考まで
- wormhole
- ベストアンサー率28% (1626/5665)
pythonというよりghostscript側の問題ではないでしょうか? SIZE.csv に書かれている内容を見る限り D:\Program_factory\Python\_development\GGG\test.pdf へのアクセスが無効(権限がない) と書かれてるようですけど。
お礼
wormholeさん 早速ありがとうございます。 ghostscript側ということは、パラメータに問題がありそうですね。(ファイルパスは何度も確認してので…) 引継ぎ探ってみたいと思います。
お礼
wormholeさん 返事が遅くなり申し訳ございません。 コマンドプロンプトから試してみたのですが、出力されたCSVの内容は最初の質問時と同じものでした。 GhostscriptにこだわらないでPyPDF2を利用しようかとも思っていますが、原因は知っておきたいところです。