LoginSignup
9
3

More than 5 years have passed since last update.

[実際のコード付き by Python] Progateからダウンロードしたコードをkindleで読みたい!

Last updated at Posted at 2018-07-31

:amphora:外出先でもプログラミングやコードを学びたい:amphora:

私は外出先でもプログラミングを勉強したい派ですが、モバイルルーターは持っていないし、PCを持ち歩く気力もありません。しかも長々とスマートフォンの画面を凝視するのはつらいです。

そこで思いついたのが、:postbox:.txt形式でコードをKindleに送ってそれを閲覧:postbox:
しかしProgateでダウンロードしたファイルはレッスンごとにわかれているため、ひとつのファイルにまとめるための手作業コピペの連続はきつい:black_joker:

なので以下を目論んでPythonでコードを書きました。2番をPythonに行ってもらいます。
1. Progateのコース終了時に自分が書いたコードを一括ダウンロード
2. ダウンロードしたコード (10~20程度の複数のファイルにわかれている) をすべてbash画面に表示。
3. kindleに送信
4. コード復習( ゚Д゚)ウマー

:game_die:今回使ったモノ:game_die:

  • Python (言語)
  • Cloud9 (開発環境)
  • Progateからダウンロードした複数のファイル (Rubyでも何でもお好きなものを用意しましょう ´∀`)っ[rb, py, js etc...])

:carousel_horse:Cloud9でPythonのプロジェクトを作ってプログラム開始!:carousel_horse:

Tree.png

  • プロジェクトを作ったらフォルダを作りまとめたいファイル (今回はJavaScript。フォルダ名: JavaScript2) をすべてプロジェクトに放り込む。page1_script.js...がProgateからダウンロードしたコード。

JS2contents.png

  • 新しいテキストファイル(ファイル名: Javascript2.txt)も準備する
  • 新しいPythonファイル (ファイル名: javascript_kindle.py) をプロジェクトの直下に置く

:tada:プログラム内容:tada:

コード内容は侍エンジニア塾の【Python入門】ファイルの読み込み方法をマスターしよう!に負うところが大きいです。ありがとうございます:heart:

:musical_note:bash画面への出力のみのコード:musical_note:

以下のコードは旧コード (bash画面への出力のみ、新しいテキストファイルにまるっと貼り付けなし) です。「Pythonに新しいテキストファイルにまるっと貼り付けまでしてほしい」という方は次の見出し「:sparkles:ファイル作成→貼り付けまでしてくれるコード:sparkles:」を使ってください:wink:

javascript_kindle.py
# -*- coding:utf-8 -*-
# bash画面への出力のみ、新しいテキストファイルにまるっと貼り付けなし
# https://qiita.com/Yukiya025/items/c80b143427ceaa343c22
# 別のファイルを操作したいときは変数filenameの中身 (_script.js) を変えればOK!
filename = "_script.js" 

# 対象ファイルはpage1_script.js~page17_script.jsの計17ファイル
# ただし変数iは0からのカウントなので、page17_script.jsは18番目の要素となる
# shiracamusさん、ありがとうございます!
for i in range(1, 18): # rangeの数字はfile数に応じて変更
    print("////////////////////////")
    print("// page" + str(i) + filename)
    # ファイルを"読み込みモード"で開く
    file_data = open("./JavaScript2/page" + str(i) + filename, "r")

    #テキスト全体をまとめて取得
    text = file_data.read()

    #取得したテキストを表示
    print text

    #開いたファイルを閉じる
    file_data.close()

上のコードを保存したらbashで $ python javascript_kindle.py と入力しエンターを押して実行します。

bash.png
するとyukiya025:~/workspace $ python javascript_kindle.pyの下から「page1_script.js」から「page17_script.js」の内容がすべて表示されます。

:sparkles:ファイル作成→貼り付けまでしてくれるコード:sparkles:

こちら↓がまるっと空のテキストファイル作成→貼り付けまでしてくれるコードです:laughing: やったあ:sparkles: KeisukeToyotaさん、ありがとうございます:heartpulse:

javascript_kindle.py
# -*- coding:utf-8 -*-
# 上記は日本語をPythonで使うなら必須

# Python 2.7.6なのでinput()ではなくraw_input()を使う。
filename = raw_input('数字より後ろのファイル名を入力してください。「_script.js」など: ')
# そのうち自動で「_」から最後までの文字列を取得するコードを追加したい
import os
files = os.listdir('./JavaScript2')
filenum = len(files) + 1

# 一括でファイル出力ができるコードもKeisukeToyotaさんから教えてもらいました! ありがとうございます!
with open('./output.txt', 'w+') as f:       
    # shiracamusさん、ありがとうございます!
    for i in range(1, filenum):
        file_data = open('./JavaScript2/page' + str(i) + filename, 'r')
        f.write('////////////////////////\n//page' + str(i) + filename + '\n' + file_data.read() + '\n')

上のコードを保存したらbashで $ python javascript_kindle.py と入力しエンターを押して実行します。

するとプロジェクトフォルダ直下にoutput.txtファイルが作成され、中にすべてのコードがすべて入っています:heart_eyes:
output.png

output_contents.png

あとは、kindleに送信すればOK。
kindle.png

すべてコピーして新しいテキストファイルにまるっと貼り付け もpythonでできるよ? という方もいるでしょうが、やり方調べてもよくわからなかったので見送りました:baby:
KeisukeToyotaさんがファイル出力までできるコードをこめんとしてくれました! ありがとうございます:heartpulse:

アドバイス超歓迎です:sparkles:

:dragon:今回のエラー集:dragon:

変数iはクオテーションで囲まない

Traceback (most recent call last):
  File "javascript_kindle.py", line 5, in <module>
    file_data = open("./JavaScript2/page" + "i" + "_script.js", "r")
IOError: [Errno 2] No such file or directory: './JavaScript2/pagei_script.js'

数値を文字列で使うときはstr()で型変換!

Traceback (most recent call last):
  File "javascript_kindle.py", line 6, in <module>
    file_data = open("./JavaScript2/page" + i + "_script.js", "r")
TypeError: cannot concatenate 'str' and 'int' objects

file_data = open("./JavaScript2/page" + str(i) + "_script.js", "r") とする。

for文が0から開始

Traceback (most recent call last):
  File "javascript_kindle.py", line 6, in <module>
    file_data = open("./JavaScript2/page" + str(i) + "_script.js", "r")
IOError: [Errno 2] No such file or directory: './JavaScript2/page0_script.js'

for文の直下にi += 1を挿入して解決。
for i in range(1, 18): と修正。
shiracamusさん、ありがとうございます:heart_eyes:
→ファイル数に柔軟に対応できるようにfilenum変数を追加しました。

9
3
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
3