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

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

詳細はこちら
Python

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

Q&A

解決済

2回答

807閲覧

Python 戻り値の扱い

退会済みユーザー

退会済みユーザー

総合スコア0

Python

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

0グッド

0クリップ

投稿2019/09/06 07:16

編集2019/09/06 12:12

お世話になります。
sample.pyとsample2.pyの間の変数戻り値について質問です。
#やりたいこと
result_textをsample.pyでprintしたい

#できないこと
subprocessを使っている為 result_text = "ここの文字をsample.txtで出力したいです"ではなく「0」と表示されていまいます。
コマンドを指定したうえでsample2.pyのresult_textの戻り値を取得するにはどのように設定すれば良いのでしょうか?
➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡の部分になります。

#sample.py

from google.cloud import storage from pydub import AudioSegment import os import subprocess import sample2.py cmd = "python3 sample2.py gs://bucket/" result_text = subprocess.call(cmd.split()) print(result_text)

#sample2.py

# !/usr/bin/env python # coding: utf-8 import argparse import io import os import sys import codecs import datetime import locale import subprocess import shutil def transcribe_gcs(gcs_uri): result_text = "ここの文字をsample.txtで出力したいです" ➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡ return result_text➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡➡ if __name__ == '__main__': parser = argparse.ArgumentParser( description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) parser.add_argument( 'path', help='GCS path for audio file to be recognized') args = parser.parse_args() transcribe_gcs(args.path)

宜しくお願いします。

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

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

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

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

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

guest

回答2

0

別に標準出力に意味があるわけでは無いようですので。
定数を参照するだけなら

python

1# sample.py 2import sample2 3print(sample2.result_text)

python

1# sample2.py 2result_text = "ここの文字をsample.txtで出力したいです"

関数を利用したいなら

python

1# sample.py 2import sample2 3gcs_uri = 'foo' # 適切な値 4print(sample2.transcribe_gcs(gcs_uri))

python

1# sample2.py 2def transcribe_gcs(gcs_uri): 3 result_text = "ここの文字をsample.txtで出力したいです" 4 return result_text

投稿2019/09/07 09:40

kairi003

総合スコア1332

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

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

退会済みユーザー

退会済みユーザー

2019/09/07 09:44

ありがとうございますできました
guest

0

ベストアンサー

こういうことですか?

python

1# sample.py 2import subprocess 3 4cmd = "python sample2.py gs://bucket/" 5p = subprocess.Popen(cmd.split(), 6 stderr=subprocess.PIPE, stdout=subprocess.PIPE) 7stdout = p.communicate() 8 9for n in stdout: 10 print(n.decode("utf8")) 11 12

python

1# sample2.py 2import sys 3 4if __name__ == '__main__': 5 result_text = "ここの文字をsample.txtで出力したい" 6 sys.exit(result_text) 7 8

投稿2019/09/06 08:07

FiroProchainezo

総合スコア2421

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

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

退会済みユーザー

退会済みユーザー

2019/09/06 09:48

ありがとうございます。 print(n.decode("utf8")) ここで以下エラーがでました。 UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 2: invalid start byte
退会済みユーザー

退会済みユーザー

2019/09/06 09:57

print(stdout) # print(n.decode("utf8")) にしましたがエラーがでてしまいます
退会済みユーザー

退会済みユーザー

2019/09/06 10:05

sample.pyも <subprocess.Popen object at 0x00000154565454908> という出力がでましたが、日本語の「ここの文字をsample.txtで出力したい」は出力しない状況です。
FiroProchainezo

2019/09/06 11:36

こちらの環境は以下です。 - Windows 10 Professional 64bit - Pycharm Professional 2019.2.1 - Python 3.5.2 - ファイル構造 subprocess ├ venv ├ sample.pysample2.py こちらの環境では動作しているので、環境が異なるんだと思います。
退会済みユーザー

退会済みユーザー

2019/09/06 11:49

ありがとうございます。 windows1064bit python3.6.8 です。venvはつかっておりませんが似ていますね。FiroProchainezoさんに理解して頂きたく実際のソースに即した方法で新しく質問を立てさせていただきます。少々お待ちください
退会済みユーザー

退会済みユーザー

2019/09/06 11:50

FiroProchainezoさんさえよければこちらの質問を編集してもよろしいでしょうか?
退会済みユーザー

退会済みユーザー

2019/09/06 11:54 編集

本質問修正させて頂きました。引き続きどうぞよろしくお願いいたします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問