🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

1回答

3783閲覧

【VScode】with open関数でエラーがでる

yoshitaka_1020

総合スコア17

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2021/02/04 14:25

編集2021/02/04 14:26

前提・実現したいこと

エラーを解決したい

発生している問題・エラーメッセージ

[Running] python -u "/Users/yoshitakanishikawa/Desktop/python_study/Git/language-rank/accessgit-copy.py" Traceback (most recent call last): File "/Users/yoshitakanishikawa/Desktop/python_study/Git/language-rank/accessgit-copy.py", line 57, in <module> get_stars_repos() File "/Users/yoshitakanishikawa/Desktop/python_study/Git/language-rank/accessgit-copy.py", line 51, in get_stars_repos token = get_access_token() File "/Users/yoshitakanishikawa/Desktop/python_study/Git/language-rank/accessgit-copy.py", line 41, in get_access_token with open("token.txt", "r") as f: FileNotFoundError: [Errno 2] No such file or directory: 'token.txt'``` ### 該当のソースコード ```ここに言語を入力 コード
python3 import json import requests import pandas as pd def main(): def get_api_repos(endpoint): r = requests.get(endpoint) # ステータスコードが200じゃない(アクセスできない)場合の if r.status_code != 200: print("エンドポイントにアクセスできません") # json文字列をjson.loads()でPythonで扱える辞書形式に変換する repos_dict = json.loads(r.content) print(repos_dict) def get_access_token(): with open("token.txt", "r") as f: return f.read().strip() def get_stars_repos(): # アクセストークンの取得 token = get_access_token() repo_stars_api_point = f"https://github.com/search/repositories?q=stars:>0&sort=stars&per_page=100&access_token={token}" get_api_repos get_api_repos(repo_stars_api_point) get_stars_repos()

イメージ説明

補足情報(FW/ツールのバージョンなど)

Mac Bigsur
M1
VScode

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takutakuya

2021/02/04 14:43

絶対パスを指定して読み込めるなら、同じフォルダを見に行ってないんだと思います。
yoshitaka_1020

2021/02/04 14:48

ありがとうございます! どうしたら解決できるのでしょうか? 最近、VScodeを使い始めたばかりで良くわからなくて!
takutakuya

2021/02/04 15:07

VScode内に表示されているターミナルで実行されているなら、カレントディレクトリをPythonファイルがある場所にしてあげれば、ファイル名だけで読み込めると思います。
yoshitaka_1020

2021/02/04 15:24 編集

入ってるんですよね…同じファイル内に…謎です…
takutakuya

2021/02/04 15:45

ターミナルのカレントディレクトリですよ?
guest

回答1

0

ベストアンサー

VSCodeは、「ファイル」メニューの「フォルダーを開く」で開いたフォルダー(ディレクトリ)をカレントディレクトリとして、統合ターミナルでコードを実行します。なお、Mac用だと「フォルダーを開く」が存在せず、「開く」で共用しているんだったかな。

スクリーンショットやログから判断すると、あなたは「Git」というフォルダー(ディレクトリ)をVSCodeで開き、そのフォルダーにある「language-rank」フォルダーのファイル「accessgit-copy.py」を実行しています。このとき、VSCodeがカレントディレクトリにするのは、language-rankフォルダーではなくGitフォルダーです。

Gitフォルダーにはtoken.txtが存在しないため、質問文のようなエラーが発生します。

一番簡単な対策は、VSCodeの「ファイル」→「フォルダーを開く」で、language-rankフォルダーを開いて、その後は今までと同じ操作でコードを実行することです。

あるいは、「フォルダーを開く」はそのままで、openに渡す引数を"language-rank/token.txt"に変更してもいいでしょう。

カレントディレクトリがどこにあっても(コードと同じフォルダーにある)"token.txt"を読めるようにするには、実行中のコードの置かれたフォルダーをos.path.dirname(__file__)で取得して、os.path.join(os.path.dirname(__file__), "token.txt")openに渡してください。

投稿2021/02/04 16:54

編集2021/02/04 16:59
Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshitaka_1020

2021/02/04 23:09

夜分遅くにも関わらず丁寧な回答をありがとうございました! ベストアンサー中のベストアンサー、キングオブベストアンサーでございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問