質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.09%

PDFの特定ページのみを回転させたい

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 87

hamani

score 0

前提・実現したいこと

フォルダ内に複数あるPDFファイルを取得して2ページ目のみを180度回転させて上書き保存をしたいのですが
FileNotFoundErrorが出てしまいます。

発生している問題・エラーメッセージ

Traceback (most recent call last):
  File "//ディレクトリ/test3.py", line 29, in <module>
    pdf_roll(file_list, 180)
  File "//ディレクトリ/test3.py", line 19, in pdf_roll
    file = PyPDF2.PdfFileReader(open(str(p_file), 'rb'))
FileNotFoundError: [Errno 2] No such file or directory: "[]"

該当のソースコード

import os
import PyPDF2
import glob

file_list = glob.glob('/ディレクトリ/*')

for file in os.listdir("."):
    # ファイルかどうか
    is_file = os.path.isfile(file)
    # このpyファイル自身でないか
    not_py_file = os.path.basename(__file__) != file

    if is_file and not_py_file:
        file_list.append([file])

def pdf_roll(p_file, p_angle):
    file = PyPDF2.PdfFileReader(open(str(p_file), 'rb'))
    file_output = PyPDF2.PdfFileWriter()
    for page_num in range(file.numPages):
        page = file.getPage(page_num)
        page.rotateClockwise(180)
        file_output.addPage(page)
    with open(p_file + '_roll.pdf', 'wb') as f:
        file_output.write(f)

pdf_roll(file_list, 180)

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

Python3.8.3を使用しています。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • Lhankor_Mhy

    2020/07/01 15:51

    print( p_file )

    などとしてみれば、ファイル名のリストであるのか、それとも私が間違っていてhamaniさんのおっしゃるようにファイルであるのかがわかると思いますので、確認してみてはいかがですか?

    キャンセル

  • hamani

    2020/07/01 16:07

    import os
    import PyPDF2
    import glob

    file_list = glob.glob('//ディレクトリ/*')

    for file in os.listdir("."):
    # ファイルかどうか
    is_file = os.path.isfile(file)
    # このpyファイル自身でないか
    not_py_file = os.path.basename(__file__) != file

    if is_file and not_py_file:
    file_list.append([file])

    def pdf_roll(p_file, p_angle):
    file = PyPDF2.PdfFileReader(open(str(p_file), 'rb'))
    file_output = PyPDF2.PdfFileWriter()
    for page_num in range(file.numPages):
    page = file.getPage(page_num)
    page.rotateClockwise(180)
    file_output.addPage(page)
    with open(p_file + '_roll.pdf', 'wb') as f:
    file_output.write(f)

    print( p_file )


    Traceback (most recent call last):
    File "//test3.py", line 26, in <module>
    print( p_file )
    NameError: name 'p_file' is not defined

    とエラーが出てきました。

    キャンセル

  • Lhankor_Mhy

    2020/07/01 17:24

    インデントが消えているのでわかりませんが、関数の外に書いてあるのではありませんか?

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.09%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる