teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2020/10/19 03:05

投稿

nto
nto

スコア1438

answer CHANGED
@@ -16,4 +16,35 @@
16
16
  files = glob.glob(os.path.join(cur_dir, f, r"*.jpg"))
17
17
  with open(os.path.join(cur_dir, f, f"{f}.pdf"), "wb") as f1:
18
18
  f1.write(img2pdf.convert([file for file in files]))
19
+ ```
20
+
21
+
22
+
23
+ ### 追記 フォルダ内にある更なる階層のフォルダを対象にする方法について
24
+ 一見複雑そうに見えますが、先日回答した処理を、更にフォルダ内でも行っているだけです。
25
+ 以下では更にもう1階層分のフォルダを探して~という風にコードを書きましたが
26
+ この先あと何階層フォルダがあるのかわからないといった場合にはwhile文を書いて
27
+ 指定したフォルダ内に更にフォルダがあるか・ないかを判定すれば良いでしょう。
28
+
29
+ ```
30
+ import img2pdf
31
+ import os
32
+ import glob
33
+
34
+ cur_dir = os.getcwd() # カレントディレクトリ取得
35
+ dirs = os.listdir(cur_dir) # 指定ディレクトリ内に存在するファイル、フォルダをリスト化
36
+
37
+ for f in dirs:
38
+ # 対象がフォルダである場合にTrueが返り、if文内が実行される
39
+ if os.path.isdir(os.path.join(cur_dir, f)):
40
+ for sf in os.listdir(os.path.join(cur_dir,f)):
41
+ if os.path.isdir(os.path.join(cur_dir, f, sf)):
42
+ files = glob.glob(os.path.join(cur_dir, f, sf, r"*.jpg"))
43
+ with open(os.path.join(cur_dir, f, sf, f"{sf}.pdf"), "wb") as f1:
44
+ f1.write(img2pdf.convert([file for file in files]))
45
+
46
+ files = glob.glob(os.path.join(cur_dir, f, r"*.jpg"))
47
+ with open(os.path.join(cur_dir, f, f"{f}.pdf"), "wb") as f1:
48
+ f1.write(img2pdf.convert([file for file in files]))
49
+
19
50
  ```