37824


### やりたいこと

`.env` という名前のファイルに名前＝値という形式で環境変数を記述したいのですがどうすればいいでしょうか？  
記述する内容はツイッターAPIのキーです。

[code]

    CONSUMER_KEY=。。。。。。
    CONSUMER_SECRET=。。。。。。。
    ACCESS_TOKEN=。。。。。。。。
    ACCESS_TOKEN_SECRET=。。。。。。。
    
[/code]

という形式です。

osはMac、エディタはAtomです。

### 経緯

下のファイルの `CONSUMER_KEY = os.environ['CONSUMER_KEY']` の所の `os.environ`  
を使って環境変数からキーを読み込みたいです。  
スクリプトの実行時に環境変数を渡すために[forego](https://github.com/ddollar/forego)というツールを使って `$
forgo run` を先頭につけて実行します。  
こうすることでforegoがカレントディレクトリに存在する `.env`
という名前のファイルから環境変数を読み取ってプログラムに渡してくれるように動作させたいです。

[code]

    import os
    
    from requests_oauthlib import OAuth1Session
    
    #環境変数から認証情報を取得
    CONSUMER_KEY = os.environ['CONSUMER_KEY']
    CONSUMER_SECRET = os.environ['CONSUMER_SECRET']
    ACCESS_TOKEN = os.environ['ACCESS_TOKEN']
    ACCESS_TOKEN_SECRET = os.environ['ACCESS_TOKEN_SECRET']
    
    #認証情報を使ってOAuth1Sessionオブジェクトを作る
    twitter = OAuth1Session(CONSUMER_KEY,
                        client_secret=CONSUMER_SECRET,
                        resource_owner_key=ACCESS_TOKEN,
                        resource_owner_secret=ACCESS_TOKEN_SECRET)
    
    #ユーザーのタイムラインを取得
    response =     twitter.get('https://api.twitter.com/1.1/statuses/home_timeline.json')
    
    #APIのレスポンスはjson形式の文字列なので、response.json()でパースしてlistを取得する。
    #statusはツイートを表すdict
    for status in response.json():
        print('@' + status['user']['screen_name'], status['text']) #ユーザー名とツイートを表示する。
    
[/code]

参照：pythonクローリング＆スクレイピング


CC BY-SA 3.0
2017-09-08T18:12:52.043
37819
2017-09-09T17:48:32.077
2017-09-09T02:57:41.790
19110
23690
question
python macos atom-editor
.envファイルに名前＝値という形式で環境変数を記述したい


Mac や Linux/Unix では、ドット "." から始まるファイル名は **隠しファイル**
として扱われますが、きちんとファイル名を指定すればエディタで編集することができます。新規作成した場合も、通常のファイルと同様に `.env`
というファイル名で保存するだけで大丈夫です。ただし、ちゃんと保存できているか確認しようとした時、そのファイルが存在しないように見えるかもしれません。

Atom エディタでは、ドットから始まる名前のファイルは以下のようにして表示することができます。

  * ファイルを開くダイアログでは、`Cmd`+`Shift`+`.` を押すと表示されます。
  * Tree View では、設定することで表示できます。 **Settings > Packages > Core Packages > Tree View** にある **Hide Ignored Names** というオプションをオフにします。

またエディタに頼らずとも、シェルにおいてそのファイルがあるべきディレクトリで `ls -a`
コマンドを実行すると、ドットから始まる名前のファイルも含め全てのファイルが列挙されます。単に `ls` するだけだと隠されてしまうので注意してください。


CC BY-SA 3.0
2017-09-09T03:20:17.320
37824
2017-09-09T17:48:32.077
2017-09-09T17:48:32.077
19110
19110
37819
answer