みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
非エンジニアの初心者向けにPythonでクリップボードを操作する便利ツールの作り方をお伝えしています。
前回の記事はコチラ。
クリップボードの内容をExcelに貼り付けられるような表形式に変換する方法でした。
さて、今回ですがこのツールをパワーアップしていきます。
というのも、Webページから何度もコピーをする必要があるとしたら、毎回Excelに貼り付けるよりも、後でまとめて開いたほうが楽ちんなときも多いはず。
ということで、今回はPythonでテキストファイルに書き込みをする方法をお伝えします。
では、行ってみましょう!
前回のおさらい
前回作成したスクリプトはコチラでした。
import pyperclip
lines =pyperclip.paste().split('\r\n')
text = ''
for i in range(0,len(lines),2):
text = '{0}{1}\t{2}\n'.format(text,lines[i],lines[i+1])
pyperclip.copy(text)
これは、以下のMDNのJavaScriptのリファレンスからメソッド一覧を取得する用で、いわゆるWebページ上で定義リストになっているものを、Excelで表形式に貼り付けられるように変換するというものです。
この出力先がpyperclip.copy関数、つまりクリップボードだったのですが、それをテキストファイルにしてみようではないか、というのが今回のお題となります。
ファイルにテキストを追加で書き込む
では、いよいよPythonでファイルの書き込みをする方法を解説していきます。
追記書き込みモードでファイルを開く
まず、書き込む対象となるファイルを開く必要がありますね。読み込みをするときと同様、open関数を使います。
modeに設定する主なものは以下の通りです。
- r:読み取り専用
- w:書き込み用(既存のファイルを上書きで書き直す)
- a:追加書き込み用(既存のファイルの末尾に追加で書き込む)
modeは省略すると読み取り専用になりますが、今回は追加で書き込みをしたいので’a’を設定します。なお、’a’や’w’のときに対象のファイルが存在しないときは、自動でファイルを生成してくれます。便利っす。
また、with文を使うとclolseメソッドを書かずに楽ができるんでしたね。
ですから、例えば「mehotds.txt」というファイルに順次追記をしていくのであれば、その部分は以下のように書けばよいでしょう。
with open('methods.txt','a') as f:
# 処理
writeメソッドでファイルにテキストを追記する
開いたファイルにテキストを書き込むにはwriteメソッドを使います。
今回の場合、ファイルオブジェクトは変数fに格納されていますから、この部分の処理としてはこうなりますね。
f.write(text)
クリップボードを表形式に変換してファイルへ追記するスクリプト
以上を踏まえると、スクリプトは以下のように作ることができます。
import pyperclip
lines =pyperclip.paste().split('\r\n')
text = ''
for i in range(0,len(lines),2):
text = '{0}{1}\t{2}\n'.format(text,lines[i],lines[i+1])
with open('methods.txt','a') as f:
f.write(text)
では、実行してみましょうか。MDNのページでいくつかのメソッドについて範囲選択してコピー、そしてこのスクリプトを実行します。
すると、methods.txtの内容は以下のようになりました。
では、もう一回やってみましょうか。別の範囲についてコピーして実行してみます。
よさそうですね。
では、このファイルの内容を全選択 Ctrl + A からの コピー Ctrl + C して、Excelシートに貼り付けてみましょうか。
うまく貼り付けることができました。
まとめ
Pythonでテキストファイルに追加で書き込みをする基本中の基本の方法についてお伝えしました。
open関数のmodeを追記書き込み’a’にすること、writeメソッドを使うこと、いずれも難しくはないですね。
今回作ったツールを活用すれば、Webページで飛び飛びになりながらも、随時テキストファイルに蓄積して、後でまとめてExcelに貼り付けといった作業の流れが実現できますね。
便利そうです。
さて、次回はせっかくなのでcsvファイルにも出力してみましょう。
どうぞお楽しみに!