質問編集履歴

7

スクリプトを修正

2020/09/13 00:03

投稿

SatelliteStar
SatelliteStar

スコア2

test CHANGED
File without changes
test CHANGED
@@ -84,11 +84,13 @@
84
84
 
85
85
  oddcounter = 0
86
86
 
87
- for filename in listdir("."):
87
+ for filename in os.listdir(os.getcwd()):
88
88
 
89
89
  #このファイルが置かれているディレクトリ内のファイルやフォルダを走査
90
90
 
91
+
92
+
91
- if filename.endswith(".pdf"):
93
+ if filename.endswith(r".pdf"):
92
94
 
93
95
  #ファイルネーム末尾が".pdf"で終わるファイルは、ファイルネームをpdflistに追加する。
94
96
 
@@ -96,7 +98,7 @@
96
98
 
97
99
 
98
100
 
99
- if filename.lower().startswithwith("even_"):
101
+ if filename.lower().startswith(r"even_"):
100
102
 
101
103
  #ファイル名が"even.pdf"で終わる場合(偶数ページのみがスキャンされているファイルの場合)、evencounterを足していく。
102
104
 
@@ -106,7 +108,7 @@
106
108
 
107
109
 
108
110
 
109
- if filename.lower().startswith("odd_"):
111
+ if filename.lower().startswith(r"odd_"):
110
112
 
111
113
  #ファイル名が"odd.pdf"で終わる場合(奇数ページのみがスキャンされているファイルの場合)、oddcounterを足していく。
112
114
 
@@ -120,7 +122,7 @@
120
122
 
121
123
  print("エラーが発生しました。")
122
124
 
123
- print(r'このファイルに置かれているPDFファイルは、"even_~~.pdf"あるいは"odd_~~.pdf"の2つのファイルのみでなくてはなりません。')
125
+ print(r"このファイルに置かれているPDFファイルは、'even_~~.pdf'あるいは'odd_~~.pdf'の2つのファイルのみでなくてはなりません。")
124
126
 
125
127
  print("プログラムを終了します。")
126
128
 
@@ -132,6 +134,8 @@
132
134
 
133
135
  #pdflistに格納されているファイルが["even_~~.pdf","odd_~~.pdf"]のみであったとして、リスト内をeven,oddからodd,evenの順番にするためにソートする。
134
136
 
137
+ #key=str.lowerで、大文字小文字を区別しないようにしている。
138
+
135
139
 
136
140
 
137
141
  pdfwriter = PyPDF2.PdfFileWriter()
@@ -142,17 +146,25 @@
142
146
 
143
147
  #奇数ページファイルの読み込みオブジェクト
144
148
 
149
+ odd_file_name = os.getcwd() + "\" + pdflist[0]
150
+
151
+ print(odd_file_name)
152
+
145
- odd_object = open(pdflist[0],"rb")
153
+ odd_object = open(odd_file_name,"rb") #pdflist[0]には、oddのファイルがある。
146
-
154
+
147
- odd_pdf = PyPDF2.PdfFileReader()
155
+ odd_pdf = PyPDF2.PdfFileReader(odd_object)
148
156
 
149
157
 
150
158
 
151
159
  #偶数ページファイルの読み込みオブジェクト
152
160
 
161
+ even_file_name = os.getcwd() + "\" + pdflist[1]
162
+
163
+ print(even_file_name)
164
+
153
- even_object = open(pdflist[1],"rb")
165
+ even_object = open(even_file_name,"rb") #pdflist[1]には、evenのファイルがある。
154
-
166
+
155
- even_pdf = PyPDF2.PdfFileReader()
167
+ even_pdf = PyPDF2.PdfFileReader(even_object)
156
168
 
157
169
 
158
170
 
@@ -166,7 +178,7 @@
166
178
 
167
179
  superchecker = 0
168
180
 
169
- #58行目のような状況に遭遇した場合の排他処理そするための識別コード:デフォルトは1で、if文に引っかかった場合に1とする。
181
+ #57行目のような状況に遭遇した場合の排他処理そするための識別コード:デフォルトは1で、if文に引っかかった場合に1とする。
170
182
 
171
183
  if odd_num_page != even_num_page:
172
184
 
@@ -186,8 +198,6 @@
186
198
 
187
199
  #57行目の状況に該当するので、1にしておく。
188
200
 
189
- break
190
-
191
201
  else:
192
202
 
193
203
  print("プログラムを終了します。")
@@ -196,7 +206,7 @@
196
206
 
197
207
 
198
208
 
199
- #58行目にある状況を想定して、2つのファイルのページ数で、大きい方を格納する。
209
+ #57行目にある状況を想定して、2つのファイルのページ数で、大きい方を格納する。
200
210
 
201
211
  if even_num_page > odd_num_page or even_num_page == odd_num_page:
202
212
 
@@ -212,7 +222,7 @@
212
222
 
213
223
  if superchecker == 0:
214
224
 
215
- #まずは、58行目のような状態でない場合(supercheckerが0の場合)
225
+ #まずは、57行目のような状態でない場合(supercheckerが0の場合)
216
226
 
217
227
  for pagenum in range(0,maxpagenum):
218
228
 
@@ -228,7 +238,7 @@
228
238
 
229
239
  #マージングが終了したので、最後に書き出す
230
240
 
231
- pdfoutput = open("merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
241
+ pdfoutput = open(r"merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
232
242
 
233
243
  pdfwriter.write(pdfoutput) #書き出す
234
244
 
@@ -244,7 +254,7 @@
244
254
 
245
255
  else:
246
256
 
247
- #次は、58行目のような状態である場合(superchecker1の場合)
257
+ #次は、57行目のような状態である場合(superchecker1の場合)
248
258
 
249
259
  for pagenum in range(0,maxpagenum-1):
250
260
 
@@ -268,7 +278,7 @@
268
278
 
269
279
  #マージングが終了したので、最後に書き出す
270
280
 
271
- pdfoutput = open("merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
281
+ pdfoutput = open(r"merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
272
282
 
273
283
  pdfwriter.write(pdfoutput) #書き出す
274
284
 
@@ -276,7 +286,7 @@
276
286
 
277
287
  print("すべての処理が正常に完了しました。")
278
288
 
279
- print(r'merged.pdfという名前のファイルが保存されているはずです。')
289
+ print(r"merged.pdfという名前のファイルが保存されているはずです。")
280
290
 
281
291
  print("プログラムを終了します。")
282
292
 

6

スクリプトをフルバージョンに更新済み

2020/09/13 00:02

投稿

SatelliteStar
SatelliteStar

スコア2

test CHANGED
File without changes
test CHANGED
@@ -166,7 +166,7 @@
166
166
 
167
167
  superchecker = 0
168
168
 
169
- #57行目のような状況に遭遇した場合の排他処理そするための識別コード:デフォルトは1で、if文に引っかかった場合に1とする。
169
+ #58行目のような状況に遭遇した場合の排他処理そするための識別コード:デフォルトは1で、if文に引っかかった場合に1とする。
170
170
 
171
171
  if odd_num_page != even_num_page:
172
172
 
@@ -196,7 +196,7 @@
196
196
 
197
197
 
198
198
 
199
- #57行目にある状況を想定して、2つのファイルのページ数で、大きい方を格納する。
199
+ #58行目にある状況を想定して、2つのファイルのページ数で、大きい方を格納する。
200
200
 
201
201
  if even_num_page > odd_num_page or even_num_page == odd_num_page:
202
202
 
@@ -212,7 +212,7 @@
212
212
 
213
213
  if superchecker == 0:
214
214
 
215
- #まずは、57行目のような状態でない場合(supercheckerが0の場合)
215
+ #まずは、58行目のような状態でない場合(supercheckerが0の場合)
216
216
 
217
217
  for pagenum in range(0,maxpagenum):
218
218
 
@@ -244,7 +244,7 @@
244
244
 
245
245
  else:
246
246
 
247
- #次は、57行目のような状態である場合(superchecker1の場合)
247
+ #次は、58行目のような状態である場合(superchecker1の場合)
248
248
 
249
249
  for pagenum in range(0,maxpagenum-1):
250
250
 

5

スクリプトをフルバージョンに更新済み

2020/09/12 14:05

投稿

SatelliteStar
SatelliteStar

スコア2

test CHANGED
File without changes
test CHANGED
@@ -128,12 +128,10 @@
128
128
 
129
129
 
130
130
 
131
- pdflist.reverse(key=str.lower)
131
+ pdflist.reverse()
132
132
 
133
133
  #pdflistに格納されているファイルが["even_~~.pdf","odd_~~.pdf"]のみであったとして、リスト内をeven,oddからodd,evenの順番にするためにソートする。
134
134
 
135
- #key=str.lowerで、大文字小文字を区別しないようにしている。
136
-
137
135
 
138
136
 
139
137
  pdfwriter = PyPDF2.PdfFileWriter()
@@ -144,7 +142,7 @@
144
142
 
145
143
  #奇数ページファイルの読み込みオブジェクト
146
144
 
147
- odd_object = open(pdflist[0],"rb") #pdflist[0]には、oddのファイルがある。
145
+ odd_object = open(pdflist[0],"rb")
148
146
 
149
147
  odd_pdf = PyPDF2.PdfFileReader()
150
148
 
@@ -152,7 +150,7 @@
152
150
 
153
151
  #偶数ページファイルの読み込みオブジェクト
154
152
 
155
- even_object = open(pdflist[1],"rb") #pdflist[1]には、evenのファイルがある。
153
+ even_object = open(pdflist[1],"rb")
156
154
 
157
155
  even_pdf = PyPDF2.PdfFileReader()
158
156
 

4

スクリプトをフルバージョンに更新済み

2020/09/12 14:03

投稿

SatelliteStar
SatelliteStar

スコア2

test CHANGED
File without changes
test CHANGED
@@ -80,11 +80,15 @@
80
80
 
81
81
  pdflist = []
82
82
 
83
+ evencounter = 0
84
+
85
+ oddcounter = 0
86
+
83
- for filename in os.listdir(os.getcwd()):
87
+ for filename in listdir("."):
84
88
 
85
89
  #このファイルが置かれているディレクトリ内のファイルやフォルダを走査
86
90
 
87
- if filename.endswith(r".pdf"):
91
+ if filename.endswith(".pdf"):
88
92
 
89
93
  #ファイルネーム末尾が".pdf"で終わるファイルは、ファイルネームをpdflistに追加する。
90
94
 
@@ -92,61 +96,193 @@
92
96
 
93
97
 
94
98
 
99
+ if filename.lower().startswithwith("even_"):
100
+
101
+ #ファイル名が"even.pdf"で終わる場合(偶数ページのみがスキャンされているファイルの場合)、evencounterを足していく。
102
+
103
+ #大文字の拡張子の可能性も考慮し、lowerメソッドを組んでいる。
104
+
105
+ evencounter += 1
106
+
107
+
108
+
109
+ if filename.lower().startswith("odd_"):
110
+
111
+ #ファイル名が"odd.pdf"で終わる場合(奇数ページのみがスキャンされているファイルの場合)、oddcounterを足していく。
112
+
113
+ #大文字の拡張子の可能性も考慮し、lowerメソッドを組んでいる。
114
+
115
+ oddcounter += 1
116
+
117
+
118
+
119
+ if evencounter != 1 or oddcounter != 1:
120
+
121
+ print("エラーが発生しました。")
122
+
123
+ print(r'このファイルに置かれているPDFファイルは、"even_~~.pdf"あるいは"odd_~~.pdf"の2つのファイルのみでなくてはなりません。')
124
+
125
+ print("プログラムを終了します。")
126
+
127
+ sys.exit()
128
+
129
+
130
+
95
- pdflist.reverse()
131
+ pdflist.reverse(key=str.lower)
132
+
133
+ #pdflistに格納されているファイルが["even_~~.pdf","odd_~~.pdf"]のみであったとして、リスト内をeven,oddからodd,evenの順番にするためにソートする。
134
+
135
+ #key=str.lowerで、大文字小文字を区別しないようにしている。
136
+
137
+
96
138
 
97
139
  pdfwriter = PyPDF2.PdfFileWriter()
98
140
 
141
+ #結合したPDFファイルを保持するために、オブジェクトを作成しておく。
142
+
99
143
 
100
144
 
101
145
  #奇数ページファイルの読み込みオブジェクト
102
146
 
103
- #ここの部分でエラー
104
-
105
- odd_file_name = os.getcwd() + "\" + pdflist[0]
106
-
107
- print(odd_file_name)
108
-
109
- odd_object = open(odd_file_name,"rb") #wbだったためrbに修正済み
147
+ odd_object = open(pdflist[0],"rb") #pdflist[0]にはoddのファイルがある。
148
+
149
+ odd_pdf = PyPDF2.PdfFileReader()
110
150
 
111
151
 
112
152
 
113
153
  #偶数ページファイルの読み込みオブジェクト
114
154
 
115
- #上の部分と同様の記述をしているため、ここの部分でもエラーが怒る可能性大。
116
-
117
- even_file_name = os.getcwd() + "\" + pdflist[1]
118
-
119
- print(even_file_name)
120
-
121
- even_object = open(even_file_name,"rb") #wbだったためrbに修正済み
155
+ even_object = open(pdflist[1],"rb") #pdflist[1]にはevenのファイルがある。
122
-
156
+
123
- even_pdf = PyPDF2.PdfFileReader(even_object)
157
+ even_pdf = PyPDF2.PdfFileReader()
158
+
159
+
160
+
161
+ #evenとoddが同じ枚数の紙からスキャンしたオブジェクトなら、ページ数が揃うはず。その検証を行う。
162
+
163
+ #evenのページ数を取得する。
164
+
165
+ odd_num_page = odd_pdf.numPages
166
+
167
+ even_num_page = even_pdf.numPages
168
+
169
+ superchecker = 0
170
+
171
+ #57行目のような状況に遭遇した場合の排他処理そするための識別コード:デフォルトは1で、if文に引っかかった場合に1とする。
172
+
173
+ if odd_num_page != even_num_page:
174
+
175
+ print("異なる文書からスキャンた奇数ページファイル、偶数ページファイルを誤って組み合わせないようにするための、安全用プログラムが作動しました。")
176
+
177
+ print("同じ文書からスキャンして得られた偶数ページファイルと奇数ページファイルは、同じページ数になるはずです。")
178
+
179
+ print("しかし、同じ文書からスキャンした文書で、最後のページが真っ白だった場合にそのページをスキャンしなかった場合も考えられます。")
180
+
181
+ print("あなたは、上記の状況に該当しますか。する場合は、1を入力してください。")
182
+
183
+ checknum = int(input())
184
+
185
+ if chenknum == 1:
186
+
187
+ superchecker = 1
188
+
189
+ #57行目の状況に該当するので、1にしておく。
190
+
191
+ break
192
+
193
+ else:
194
+
195
+ print("プログラムを終了します。")
196
+
197
+ sys.exit()
198
+
199
+
200
+
201
+ #57行目にある状況を想定して、2つのファイルのページ数で、大きい方を格納する。
202
+
203
+ if even_num_page > odd_num_page or even_num_page == odd_num_page:
204
+
205
+ maxpagenum = even_num_page
206
+
207
+ else:
208
+
209
+ maxpagenum = odd_num_page
124
210
 
125
211
 
126
212
 
127
213
  #PDFを、いよいよマージする。
128
214
 
215
+ if superchecker == 0:
216
+
217
+ #まずは、57行目のような状態でない場合(supercheckerが0の場合)
218
+
129
- for pagenum in range(0,odd_pdf.numPages):
219
+ for pagenum in range(0,maxpagenum):
130
-
220
+
131
- oddpageobject = odd_pdf.getPage(pagenum)
221
+ oddpageobject = odd_pdf.getPage(pagenum)
132
-
222
+
133
- pdfwriter = addPage(oddpageobject)
223
+ pdfwriter = addPage(oddpageobject)
134
-
224
+
135
- evenpageobject = even_pdf.getPage(pagenum)
225
+ evenpageobject = even_pdf.getPage(pagenum)
136
-
226
+
137
- pdfwriter = addPage(evenpageobject)
227
+ pdfwriter = addPage(evenpageobject)
138
-
139
-
140
-
228
+
229
+
230
+
141
- #マージングが終了したので、最後に書き出す
231
+ #マージングが終了したので、最後に書き出す
142
-
232
+
143
- pdfoutput = open(r"merged.pdf","wb")
233
+ pdfoutput = open("merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
144
-
234
+
145
- pdfwriter.write(pdfoutput)
235
+ pdfwriter.write(pdfoutput) #書き出す
146
-
236
+
147
- pdfoutput.close()
237
+ pdfoutput.close() #書き込みの終了
148
-
238
+
149
- print("すべての処理が正常に完了しました。")
239
+ print("すべての処理が正常に完了しました。")
240
+
241
+ print(r'merged.pdfという名前のファイルが保存されているはずです。')
242
+
243
+ print("プログラムを終了します。")
244
+
245
+
246
+
247
+ else:
248
+
249
+ #次は、57行目のような状態である場合(superchecker1の場合)
250
+
251
+ for pagenum in range(0,maxpagenum-1):
252
+
253
+ oddpageobject = odd_pdf.getPage(pagenum)
254
+
255
+ pdfwriter = addPage(oddpageobject)
256
+
257
+ evenpageobject = even_pdf.getPage(pagenum)
258
+
259
+ pdfwriter = addPage(evenpageobject)
260
+
261
+ if pagenum == maxpagenum-2:
262
+
263
+ lastpage = maxpagenum-1
264
+
265
+ lastpageobject = even_pdf.getPage(lastpage)
266
+
267
+ pdfwriter = addPage(lastpageobject)
268
+
269
+
270
+
271
+ #マージングが終了したので、最後に書き出す
272
+
273
+ pdfoutput = open("merged.pdf","wb") #"meiged.pdf"という名前のPDFを作成する
274
+
275
+ pdfwriter.write(pdfoutput) #書き出す
276
+
277
+ pdfoutput.close() #書き込みの終了
278
+
279
+ print("すべての処理が正常に完了しました。")
280
+
281
+ print(r'merged.pdfという名前のファイルが保存されているはずです。')
282
+
283
+ print("プログラムを終了します。")
284
+
285
+
150
286
 
151
287
  ```
152
288
 

3

ご指摘にあった部分を修正済み

2020/09/12 14:01

投稿

SatelliteStar
SatelliteStar

スコア2

test CHANGED
File without changes
test CHANGED
@@ -118,7 +118,7 @@
118
118
 
119
119
  print(even_file_name)
120
120
 
121
- even_object = open(even_file_name,"wb") #wbだったため、rbに修正済み
121
+ even_object = open(even_file_name,"rb") #wbだったため、rbに修正済み
122
122
 
123
123
  even_pdf = PyPDF2.PdfFileReader(even_object)
124
124
 

2

ご指摘にあった部分を修正済み

2020/09/12 05:32

投稿

SatelliteStar
SatelliteStar

スコア2

test CHANGED
File without changes
test CHANGED
@@ -126,7 +126,7 @@
126
126
 
127
127
  #PDFを、いよいよマージする。
128
128
 
129
- for pagenum in range(0,maxpagenum):
129
+ for pagenum in range(0,odd_pdf.numPages):
130
130
 
131
131
  oddpageobject = odd_pdf.getPage(pagenum)
132
132
 

1

ご指摘にあった部分を修正済み

2020/09/12 05:26

投稿

SatelliteStar
SatelliteStar

スコア2

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  しかし、いちいちスキャンして裏返してスキャンして、次の紙をセットしてスキャンして裏返してスキャンして次の紙...など、面倒でやってられません。
16
16
 
17
- そこで、この文書を、フィーダーを使って表側をすべて連続スキャンし、表文書の表側(1,2,3,...ページ)がスキャンされたPDFを出力します。
17
+ そこで、この文書を、フィーダーを使って表側をすべて連続スキャンし、表文書の表側(1,3,5,...ページ)がスキャンされたPDFを出力します。
18
18
 
19
19
  次に、同様に裏側(2,4,6,...ページ)がスキャンされたPDFを出力します。
20
20
 
@@ -106,9 +106,7 @@
106
106
 
107
107
  print(odd_file_name)
108
108
 
109
- odd_object = open(odd_file_name,"wb") #pdflist[0]は、oddのファイルがある。
109
+ odd_object = open(odd_file_name,"rb") #wbだったため、rb修正済み
110
-
111
- odd_pdf = PyPDF2.PdfFileReader(odd_object)
112
110
 
113
111
 
114
112
 
@@ -120,7 +118,7 @@
120
118
 
121
119
  print(even_file_name)
122
120
 
123
- even_object = open(even_file_name,"wb") #pdflist[1]は、evenのファイルがある。
121
+ even_object = open(even_file_name,"wb") #wbだったため、rb修正済み
124
122
 
125
123
  even_pdf = PyPDF2.PdfFileReader(even_object)
126
124