プログラミング素人のはてなブログ

プログラミングも電気回路も専門外の技術屋の末端が勉強したことや作品をアウトプットするブログ。コードに間違いなど見つけられたら、気軽にコメントください。 C#、Python3、ラズパイなど。

Anacondaでpythonプログラミング & TeratermでRaspberry Piに転送

先日、Visual StudioPythonを導入したが、予測変換がいまいちだったり、反応が遅いのでAnaconda+Pycharmに変更しました。
まだ、debugのショートカットが"F?"ではありますが、vsでVC#を使っているときぐらいの使い勝手だと思ってます。

pythonIDEも数種類あるようですし、anacondaのようなパッケージもいろいろあると思いますが、私は↓で紹介されていることもありanacondaを使いました。

じつは、先日まで使っていたwin 10 PCが故障したので、いつもとはちがうwin7を使っています。
修理はできそうなので、これはこれで修理が終わったら、ここで報告しようと思う。

まずはインストールですが、ここを参考にすると、問題なくインストールできました。ちなみにWin7(pro 64bit)でも問題なくこれを参照してインストールできました。
www.procrasist.com

次にTwitterをつかうため、python用のライブラリ”tweepy”をインポートします。
Anacondaのプロンプトを立ち上げ、

$pip install tweepy

とします。
f:id:s51517765:20170924121255j:plain

最後に、デバックをしようとすると、インタプリタがないといってくるので、右上の歯車のところからインタプリタを設定します。
f:id:s51517765:20170928230845j:plain

これで、Windows上でAnaconda+Pycharmによるpython環境はできたことになります。

次にpythonのコードを作成したら、ラズパイに転送します。

まず、ラズパイにファイルを転送するためにTeratermを導入します。
↓を参照し、このとおりに進めれば問題ないです。
Raspberry PiをWindowsで操作する(SSH) | S2

ここで、標準インストールがおすすめ(適当にデフォルトのカスタムですすめたら接続できなかった)

あらかじめラズパイのIPは調べておきます。ポートは22に変更します。
ユーザー名とログインパスを入力すると、LT Tatminalが立ち上がり、LAN接続で操作できるようになります。
SSH(リモートデスクトップTeraterm接続)を始めると、パスワードを変更しろといってきます。セキュリティのためです。
そのままでも使えないことはないが

$sudo raspi-config

からパスワードを変更しておきましょう。

Teratermのターミナル画面に.py ファイルをドロップすると転送できます。
f:id:s51517765:20170924121815j:plain
すると、何かErrorらしいものがでました。

ラズパイにtweepyが入っていないためのようです。まずはtweepyをインストールします。

$sudo pip3 instal tweepy

ここでも"sudo" (管理者権限で実行を示す)を入れないとErrorになる。

$ls

で転送した.pyが表示されればOK。

$python3 twitter.py

で実行します。

検索してファイルに書き出す機能とテキストファイルからBot的に一定時間ごとにTweetする機能を作りました。

ちなみに、無限ループにしているので、停止は"Ctrl + c" です。

文字コードWindowsC#で使ったListを流用したかったので、"utf"を明示的に指定しています。
なんか、標準だとshift-jisかなにかで文字化けたので。

# -*- coding: utf-8 -*-
import random
import tweepy
import time
print("start_python!")

CONSUMER_KEY="**********"
CONSUMER_SECRET="**********"
ACCESS_TOKEN="**********"
ACCESS_SECRET="**********"
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)

def serch():  #関数定義
    keywords = [u'電子工作',u'秋葉原']
    query = 'OR'.join(keywords)
    file = open('serch.txt', 'a', encoding='utf')  # 追記モードでオープン
    for tweet in api.search(q=query, count=20):
        file.write(tweet.user.screen_name)
        file.write("\r\n")
        file.write()
        print("")
    file.close()

def Auto_tweet(): #関数定義
    rand=random.randint(1,109)
    n=0
    file=open('List.txt', 'r', encoding='utf') #UTFを指定する
    tweet="1"
    try:
        while tweet!="":
            tweet = file.readline()
            n=n+1
            if n == rand:
                break
        print(tweet)
        api.update_status(tweet)     #tweet
    except:
       Print("Tweet Error!")

while(True):
    serch()
    Auto_tweet()
    print("Sleep!")
    time.sleep(3600)