質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

Q&A

解決済

1回答

425閲覧

別pythonファイルの関数の値の出力方法

kentaronagata

総合スコア20

Python 3.x

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

0グッド

0クリップ

投稿2023/01/23 03:17

編集2023/01/23 04:07

前提

今関数についての勉強をしています。
ここに質問の内容を詳しく書いてください。

実現したいこと

別のpythonファイルの関数を実行し出力した値を持ってきたいです。
別のファイル(uav4.py)では以下のようなコードが記入されています。

python

1def get_report(analytics, next_page_token="0"): 2# 設定に関してはhttps://ga-dev-tools.web.app/dimensions-metrics-explorer/を参照 3 request_body = { 4 "reportRequests": [{ 5 "viewId": VIEW_ID, 6 "pageSize": 10000, 7 "pageToken": next_page_token, 8 "dateRanges": [{'startDate': f'{date_set}', 'endDate': f'{date_set}'}], 9 "metrics": [{"expression": "ga:pageviews"},{'expression':"ga:sessions"}], 10 # "dimensions": [{"name": "ga:pagePath"}, {"name": "ga:pageTitle"}], 11 "orderBys": [{"fieldName": "ga:pageviews", "sortOrder": "DESCENDING"}] 12 }] 13 } 14 return analytics.reports().batchGet(body=request_body).execute() 15 16 17def get_response(response): 18 rows = [] 19 for report in response.get("reports", []): 20 # pprint(report) 21 column_header = report.get("columnHeader", {}) 22 dimension_headers = column_header.get("dimensions", []) 23 metric_headers = column_header.get("metricHeader", {}).get("metricHeaderEntries", []) 24 next_page_token = report.get('nextPageToken') 25 26 for row in report.get("data", {}).get("rows", []): 27 row_data = {} 28 dimensions = row.get("dimensions", []) 29 date_range_values = row.get("metrics", []) 30 for header, dimension in zip(dimension_headers, dimensions): 31 row_data[header] = dimension 32 for i, values in enumerate(date_range_values): 33 for metricHeader, value in zip(metric_headers, values.get("values")): 34 row_data[metricHeader.get("name")] = value 35 rows.append(row_data) 36 # pprint(row) 37 return rows, next_page_token 38 39def print_response(analytics): 40 next_page_token = "0" 41 rows = [] 42 while next_page_token is not None: 43 response = get_report(analytics, next_page_token) 44 r, next_page_token = get_response(response) 45 rows.extend(r) 46 47 pprint(rows) 48 49 50def main(): 51 analytics = initialize_analytics_reporting() 52 print_response(analytics) 53 54 55if __name__ == "__main__": 56 main() 57 print(__name__)

関数はmain()が実行されて、最終はprint_response(analytics)が実行されて

  • [{'ga:pageviews': '21', 'ga:sessions': '9'}]

辞書型のものが返されます。
ここで呼び出された辞書型のものをファイル(test.py)に呼び出したいのですがどのように呼び出したらいいかがわかっていません。

試したこと

uav4.pyをインポートし以下のように実行したりしました。

python

1import uav4 2 3a = uav4.main() 4print(a)

結果Noneと返されました。
分かる方がいましたら教えていただきたいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

理由としてはprint_response関数がpprintしているだけで値を返していないからです。
print_response関数の最後でreturn rowsすることで呼出元に値を返すことができます。
さらにはmain関数でも同じくprint_responseの戻り値をさらに呼出元にreturnすればよいです。

投稿2023/01/23 04:06

編集2023/01/23 04:11
can110

総合スコア38266

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

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

can110

2023/01/23 04:13

回答に追記しました。
kentaronagata

2023/01/23 04:18

回答ありがとうございます。 print_response関数の最後でreturn rowsを行い、main関数でreturn print_response(analytics)を行うことで取り出すことに成功しました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問