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

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

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

2646閲覧

【バフェットコード】PermittionErrorがでます。もうお手上げです。

yuchin.

総合スコア7

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/10/13 07:02

Python経験数か月のものですが、必要がありまして、バフェットコードを参考に財務データベースを作ろうと思っております。

Python

1from edinet_xbrl.edinet_xbrl_parser import EdinetXbrlParser 2 3## init parser 4parser = EdinetXbrlParser() 5 6## parse xbrl file and get data container 7xbrl_file_path = r'C:\Users\Yuchi\Desktop\IRomiru_Development\TOYOTA' 8edinet_xbrl_object = parser.parse_file(xbrl_file_path) 9 10## 例えば、該当年度の総資産を取ってみる 11key = "jppfs_cor:Assets" 12context_ref = "2019" 13current_year_assets = edinet_xbrl_object.get_data_by_context_ref(key, context_ref).get_value()

しかし、エラー文が出ます。
Traceback (most recent call last): File "xbrl-parser.py", line 8, in <module> edinet_xbrl_object = parser.parse_file(xbrl_file_path) File "C:\Users\Yuchi\AppData\Local\Programs\Python\Python36\lib\site-packages\edinet_xbrl\edinet_xbrl_parser.py", line 21, in parse_file with codecs.open(xbrl_file_path, 'r', 'utf-8') as of: File "C:\Users\Yuchi\AppData\Local\Programs\Python\Python36\lib\codecs.py", line 897, in open file = builtins.open(filename, mode, buffering) PermissionError: [Errno 13] Permission denied: 'C:\Users\Yuchi\Desktop\IRomiru_Development\TOYOTA'

これはどうすればよいのでしょうか?いろいろ調べましたが、まったくわかりません。
TOYOTAというフォルダにxbrlファイルが入ってます

このコード自体はIRomiru_Developmentに入っております。
実行文:
C:\Users\Yuchi\Desktop\IRomiru_Development>py xbrl-parser.py

フォルダを読み取り専用解除したりしましたがわからないです。アクセス権限がないということなんでしょうか?
教えてください。お願いします。

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

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

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

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

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

hayataka2049

2019/10/13 07:12

バフェットコードって何ですか? 一般のプログラマにもわかるような説明をお願いします。
yuchin.

2019/10/13 16:35 編集

投資家向けに財務データベースを公開しているサービスです。検索してもらえばわかります。
guest

回答2

0

エラーの文面から判断するに、渡すべきなのは「ファイルがあるディレクトリ」ではなく「ファイルそのもの」のパスです。

python

1xbrl_file_path = r'C:\Users\Yuchi\Desktop\IRomiru_Development\TOYOTA\ほげほげ.xbrl'

ほげほげの部分は実際のファイル名に応じて書き換えてください。

参考:【python】windowsではopenの引数にフォルダを指定するとPermissionErrorになる - 静かなる名辞
(拙記事)

投稿2019/10/13 07:17

hayataka2049

総合スコア30935

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

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

yuchin.

2019/10/13 16:41

わかりやすい、解説記事も一緒に載せていただきありがとうございます。 ただ、そうすると Traceback (most recent call last): File "xbrl-parser.py", line 13, in <module> current_year_assets = edinet_xbrl_object.get_data_by_context_ref(key, context_ref).get_value() AttributeError: 'NoneType' object has no attribute 'get_value' というエラーが出ました。
hayataka2049

2019/10/13 19:09

get_data_by_context_refの呼び出しの時点でなにかが上手く行かなくて、Noneが返っているのでしょう。私自身はライブラリの仕様については把握していませんし、その点についてはそちらで解決していただいた方が良いかと思います。
guest

0

直近でちょうど同じようなことをやったため、お答えします。
(ディレクトリ名がTOYOTAでしたので、トヨタ自動車という前提でお話します。)

xbrlファイルをwebブラウザ上にドラッグして開いてみると分かりますが、例えばトヨタ自動車の2019年3月期の有価証券報告書を見てみると、総資産に関する部分は下記のようになっています。

<jpcrp_cor:TotalAssetsUSGAAPSummaryOfBusinessResults contextRef="CurrentYearInstant" unitRef="JPY" decimals="-6">51936949000000</jpcrp_cor:TotalAssetsUSGAAPSummaryOfBusinessResults>

ですので、hayataka2049さんが仰ったように、ディレクトリではなくファイルのパスを渡した上で、名前空間とコンテキストをそれぞれ

key = "jpcrp_cor:TotalAssetsUSGAAPSummaryOfBusinessResults" context_ref = "CurrentYearInstant"

に変えれば当年の総資産額が取得できるかと思います。

ちなみにEDINETで勘定科目リストというものがあり、そのリストで勘定科目毎に名前空間とコンテキストが定められていますので、一度見られると宜しいかと思います。
リンク内容

投稿2019/12/24 08:50

yoppi2019

総合スコア8

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問