• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:pythonのスクリプトが動きません)

Pythonのスクリプトが動かない!PDFファイルを自動分割する方法

このQ&Aのポイント
  • Python3.7.0b3とPDFtkを使用したPDFファイルの自動分割スクリプトが動作しない場合について説明します。
  • スクリプトの実行手順や環境設定に問題がある可能性があります。
  • Windows7上での実行に関して、Pythonのバージョンとスクリプトの整合性を確認する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • maiko0333
  • ベストアンサー率19% (840/4403)
回答No.1

https://teratail.com/ へ相談されることをオススメします。 こちらはプログラム専門です。

g-inga
質問者

お礼

ご回答ありがとうございます。 Pythonのバージョンを3から2にインストールしなおしたらpythonのスクリプトが動くようになりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • python: fork後の標準出力について

    言語はpythonです。(バージョン : 2.6.6) 以下の二つの単純なpythonスクリプト   test.py, exe_fork.py があります。 [test.py] #!/usr/bin/env python import subprocess proc = subprocess.Popen("./exe_fork.py", stdout=subprocess.PIPE) result = proc.stdout.read() print result [exe_fork.py] #!/usr/bin/env python import os import time pid = os.fork() if pid != 0: print "parent\n" else: time.sleep(5) print "child\n" [動作] 各スクリプトの動作としては、 test.pyがexe_fork.pyをPopen(stdoutはPIPEで受信)で実行し、 read()メソッドでexe_fork.pyの標準出力を受け取り、表示する。 exe_fork.pyはforkして、   親プロセスは"parent"と出力   子プロセスは5秒後に"child"と出力 です。 [実行結果] test.pyを実行すると 5秒後に   parent   child と表示されました。 これを実行する前は実行後すぐに "parent" と表示されてスクリプト終了するのだと予想しておりました。 しかし実際はexe_fork.pyの親と子の両方のプロセス終了するまで何も表示されず 両プロセスが終了した後にtest.pyのread()メソッドが完了するようです。 (どういうしくみでそうなっているのかよくわかりません。。) [質問・相談] test.pyでexe_fork.pyの親プロセスの標準出力だけを反映する方法ございませんでしょうか? なお、都合上、以下の条件を満たしている必要がございます。  条件1: test.py側のソースは変更しない  条件2: exe_fork.pyの親プロセスが終了した時点でtest.pyのread()メソッドが終了する  条件3: forkptyは使わない [参考]  exe_fork.py側で子プロセスのみsys.stdout.close()してみましたが結局exe_fork.pyの子プロセスが終了するまで(=5秒経過するまで)test.pyのread()メソッドは完了しませんでした。   よろしくお願いします。

  • VBAからPythonを動かしたいのですが…

    いつもお世話になっております。 icevainと申します。 python超初心者です。 【質問】 『VBAでPythonを動かす』という興味のあるサイトを見つけました。 https://qiita.com/O_LUPAN/items/1ceb5c950ff40f3558ab サイトのpythonコード #ここから import sys def sum(suji1, suji2): return suji1 + suji2 if __name__ == "__main__": argv = sys.argv suji1 = str(argv[1]) suji2 = str(argv[2]) total = sum(suji1, suji2) print(total) #ここまで サイトのpythonコードを無理やり変更して、 #ここから import sys def sum(suji1, suji2): rst="OK" return rst if __name__ == "__main__": argv = sys.argv suji1 = str(argv[1]) suji2 = str(argv[2]) total = sum(suji1, suji2) print(total) #ここまで OKがかえってくると思ったのですが、 0がかえってきてしまいます。 OKをかえすにはどうすればよいのかわかりません。 お分かりの方おりましたらご協力お願い致します。

  • Pythonプログラムのエラー

    こんにちは。pythonプログラムを勉強しはじめたばかりのものです。 次のプログラムが最後の行の#のところでエラーになってなかなか 解決ができません。アドバイスいただけませんでしょうか。 #! /python30/python # coding:shift_jis import sys, os, urllib, gzip def GetAndGzip(url, out): ''' urlを読み込み、gzipで圧縮してファイルoutに出力 ''' remote = urllib.urlopen(url).read() gzfile = gzip.GzipFile(filename='', mode='web', fileobj=out) gzfile.write(remote) gzfile.colse() #パラメータを抽出 if len(sys.argv) <> 2: print '使い方:python wgetgz.py url' else: url = sys.argv[1] GetAndGzip(url, sys.stdout) #ここでエラーin<module> #ここで投稿すると、インデントがなくなってしまうようです。

  • Pythonでのプログラミングについて。

    Pythonでのプログラミングについて。 大学の授業でPythonが出たのですが、なんせ先生が適当すぎてさっぱり意味がわかりません・・; 以下の問題の答えか、もしくは解説してくれる方はいらっしゃいませんでしょうか。 Q1:オレンジの数(count)を受け取って、"Number of oranges:<count>"を返すorange関数(a)を書け。 ただし、countが10以上の場合は実際の値のかわりに"many"を使え。 def orange(count): (a) return str print orange(4) print orange(99) Q2:文字列を受け取って、最初と最後の各2文字から作成した文字列を返すboth_ends関数(b)を書け。 ただし、文字列の長さが1のときは空文字列を返せ。 def both_ends(coun): (b) return str print both_end("hello") print both_end("a") Q3:文字列を反転するプログラム(c)を書け。 orig="hello" (c) print result Q4:文字列を反転するreverse関数(d)を書け。 (d) orig="good" result=reverse(orig) print result Q5:キーボードから受け取った文字列が回文(palindrome)かどうか判定するプログラム(e)を書け。 (d) orig=raw_input("Type a phrease:") result=reverse(orig) (e) Type a phrease:alice reverse=ecila Type a phrease:anna **palindrome** 自分で本を読んだり色々調べてみたのですが、判りませんでした。。 今日の12時までなのですが、誰かお願いします(;_;)

  • シェルでのパイプの処理の書き方で困ってます

    現段階でのプログラムを載せます (質問に必要な部分を抜粋) #include "自作のヘッダファイル(動作確認済)" void tokun ( char str[], char *chops[], int *flagment , int *pipeflagment, int *pipe, int *num){ char *buf; int i; *pipeflagment = 0; buf = str; for(i=0; i <= SIZE ; i++){ if((chops[i] = strtok(buf," \t")) == NULL) break; if( *chops[i] == '|' ){ *pipeflagment = 1; *pipe = i + 1; *num = i; } buf = NULL; } if( *chops[i-1] == '&' ){ *flagment = BACK; chops[i-1] = NULL; i--; printf("**Background Mode**\n"); }else{ *flagment = FORE; printf("**Foreground Mode**\n"); } if(i > SIZE){ fprintf(stderr,"Too many args\n"); exit(1); } } int main ( void ){ char prompt[ 64 ] = "> "; char command[ 256 ]; int st, id, j, pipenum, num; char *com[256]; enum proc_flag flag; int pipeflag ; int out; int pipe_fd[2]; int child, status; char *buf; pipeflag = 0; fprintf(stderr, "%s", prompt); while (gets(command) != NULL){ if( command == "quit" ){ kill(0, SIGKILL); } buf = command; tokun(command, com, &flag, &pipeflag, &pipenum, &num); //pipe部分の記述開始 if( pipeflag == 1){ com[num] = NULL; if(pipe(pipe_fd) < 0){ perror("pipe"); exit(1); } if((child = fork()) < 0){ perror("fork"); exit(1); } if(child) { /* parent process */ close(pipe_fd[1]); dup2(pipe_fd[0], STDIN); execvp (com[pipenum], com); close(pipe_fd[0]); if(wait(&status) < 0){ perror("wait"); exit(1); } }else { /* child process */ close(pipe_fd[0]); dup2(pipe_fd[1], STDOUT); execvp (com[0], com); // 通信の終了を子プロセスに通知 close(pipe_fd[1]); } } //pipe部分の記述終了 if((id = fork ()) == 0){ if( execvp(com[0], com) == (-1)){ exit(1); } }else { if( flag == BACK ){ waitpid(-1, NULL, WNOHANG); fprintf(stderr, "%s", prompt); }else { wait(&st); fprintf(stderr, "%s", prompt); } } } return 0; } パイプ部分が作れません・・・。 どうすればいいですか?

  • 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 ここまで お分かりの方おりましたらご教授して頂けませんでしょうか。 よろしくお願いいたします

  • Python os.system 日本語ファイル名 文字化け

    python2.6 ubuntu 9.04 x64 ファイル文字コード UTF-8 # -*- coding: UTF-8 -*- import os, sys command = 'echo "あいうえお" > あああ.txt' os.system (command) このようにファイル出力すると、_____.txt と出力されます。 どのように解決するのでしょうか 直接 echo "あいうえお" > あああ.txt' とコマンドを打った場合は日本語ファイルが作成されます。 print sys.getfilesystemencoding() print sys.stdin.encoding print sys.stdout.encoding print sys.stderr.encoding print sys.getdefaultencoding() >UTF-8 >UTF-8 >UTF-8 >UTF-8 >ascii

  • pythonのシンタックスエラー

    python3のサンプルコードがあり、エラーが出ます。 内容はファイルを開いてちょっと変更して中身をプリントするというものです。 これは私が書いたのではなく、本の付録のサンプルなのですが、文法エラーとなります。何が原因かご指摘を頂ければと思いますが。文字コードの問題かなと思いましたが、UTF_8となっています。ファイルをdata.pyとして保存して、コマンドでpython data.pyを叩いたときに出てきます。(すみません、ここに張り付けた段階でインデントが見えなくなっているようですが、それは実際は問題ないです) file = "data.dat" limit = 2.0 with open(file, "r", encoding="utf_8") as fileobj: for i, line in enumerate(fileobj): if line == "\n": continue datalist = line.split(",") result = [int(float(num)<=limit) for num in datalist] print(f"{i}:{result}") #エラーメッセージ # File "data.py", line 9 # print(f"{i}:{result}") ^ #SyntaxError: invalid syntax これに関連する質問ですが、pythonはコンパイルしないようになっているみたいなので、コンパイル時のエラーと実行時のエラーの区別がつきません。このエラーは実際に動作してエラーが出ているということなのでしょうか。他の言語ではシンタックスエラーはコンパイルエラーなので実行前のエラーとは思いますが、文法チェックと実行の関係を教えて頂ければと思いますが。 よろしくお願いします。

  • ページ番号別にLIMIT定義を変えるには。たすけて

    <?php $pid = $_GET['pid']; $countRe=$num_rows; pager($_GET["pid"],$countRe); function pager($pid,$countRe){ if($pid=="") $pid=1; $maxPage=ceil($countRe/10); if($maxPage==1 or $maxPage<$pid) return false; if($pid>10){ $startPage=$pid-9; $startMore="<a href=\"$PHP_SELF?pid=".($startPage -1)."\">&lt; PREV</a>"; }else{ $startPage=1; } if($pid+10<$maxPage){ $endPage=$pid+10; $endMore=" <a href=\"$PHP_SELF?pid=".($endPage+1)."\">NEXT &gt;</a>"; }else{ $endPage=$maxPage; } $page_footer=""; for($i=$startPage;$i<=$endPage;$i++){ $page_footer.=" ".(($pid==$i)?"<span style='font-Size:120%'>$i</span>":"<a href=\"$PHP_SELF?pid=$i\">$i</a>"); } $page_footer=$startMore.$page_footer.$endMore; print $page_footer."<br>"; } ?> 例えばページIDが1ならばLIMIT 0,10 ページIDが2ならばLIMIT10,10とするにはどうしたら良いのでしょうか?? 我流で select * from lab where LIMIT $pid*10,10としましたが、エラーになってしまいます。

    • ベストアンサー
    • PHP
  • ページングについて

    $countRe=$num_rows; pager($_GET["id"],$countRe); function pager($id,$countRe){ if($id=="") $id=1; $maxPage=ceil($countRe/5); if($maxPage==1 or $maxPage<$id) return false; if($id>6){ $startPage=$id-5; $startMore="<a href=\"$PHP_SELF?id=".($startPage -1)."\">&lt; PREV</a>"; }else{ $startPage=1; } if($id+5<$maxPage){ $endPage=$id+5; $endMore=" <a href=\"$PHP_SELF?id=".($endPage+1)."\">NEXT &gt;</a>"; }else{ $endPage=$maxPage; } $page_footer=""; for($i=$startPage;$i<=$endPage;$i++){ $page_footer.=" ".(($id==$i)?"<span style='font-Size:120%'>$i</span>":"<a href=\"$PHP_SELF?id=$i\">$i</a>"); } $page_footer=$startMore.$page_footer.$endMore; print $page_footer."<br>"; } 現在このようなコードでページングしています。 該当内容が10件未満ならリンクは出ず、10件以上なら「12」とリンクが出てくれるのは良いのですが、 1ページに11件表示され2ページにも同じ内容が11件表示されてしまいます。どのようにしたら、1ページ目で10件、2ページ目で1件表示してくれるのでしょうか??

    • 締切済み
    • PHP