前提・実現したいこと
フォルダ内に複数ある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を使用しています。
p_file にリストが入っているからではありませんか?
また、file_list が空なのは、それでいいのですか?
すいませんはじめたての初心者なので初歩的なご質問なのですが、p_fileにリストが入っているというのはどういう事でしょうか?
file_list部分を更新しました。
>p_fileにリストが入っているというのはどういう事でしょうか?
質問の編集前は、file_list = [] だったので、リストが入っていますよね?
---
また、質問の編集に伴い、実際のエラーメッセージはご提示のものと異なっているのではありませんか?
ああ、for ループで内容を変更しているのですね、見逃していました。
いずれにせよ、リストであることは間違いないと思うのですが、どのような不明点がありますか?
リストが入っていないとお考えであれば、何が入っていると想定されているのですか?
リストデータ自体は同ディレクトリに入っておらず、ファイルを取得したかったのでfile_listとしています。
エラーメッセージ自体は変わらないでのすが、その後に絶対パスでファイル名が出てきています。
forループの部分で同ディレクトリにあるデータがファイルなのかこの.pyファイルかを判断して取得したいと考えており、ネットで調べて見つけたスクリプトを元に自分で加工しておりましたのでおかしい部分が多々ある状況です。
拙い説明で申し訳ありません。
>forループの部分で同ディレクトリにあるデータがファイルなのかこの.pyファイルかを判断して取得したいと考えており
はい、それは理解しました。
「p_file にリストが入っているから」については、ご納得いただけた、ということでよろしいですか?
すいません、そこの部分がまだ理解出来ておりません。。
わかりました。
繰り返しになってしまい恐縮なのですが、リストではないとすると、何が入っている想定ですか?
PDFのファイルを想定しています。
print( p_file )
などとしてみれば、ファイル名のリストであるのか、それとも私が間違っていてhamaniさんのおっしゃるようにファイルであるのかがわかると思いますので、確認してみてはいかがですか?
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
とエラーが出てきました。
インデントが消えているのでわかりませんが、関数の外に書いてあるのではありませんか?
あなたの回答
tips
プレビュー