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

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

新規登録して質問してみよう
ただいま回答率
85.35%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Python

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

Q&A

解決済

5回答

8309閲覧

シェルスクリプト(bash)で、Python(.py)のスクリプトを実行し、実行結果であるto_csv()のファイルの出力先を指定したい

000mm

総合スコア6

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Python

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

0グッド

0クリップ

投稿2021/06/28 10:34

編集2021/06/28 10:37

前提・実現したいこと

シェルスクリプトで、データの整形を行なっています。
pythonで作成したtest.pyの実行結果であるto_csv()のファイルを
どこに出力するかシェルスクリプト内で指定したいです。

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

bash

1~~省略~~ 2 3python test.py > test.csv 4 5~~省略~~ 6 7上記で既存のcsvに上書きができると思っていましたが、 8上記の方法で上書きできるのは標準出力の内容だけだと指摘をいただいたが、 9結果どうすればファイル出力先を指定できるのかが理解できていない状態です。

該当のソースコード

python

1#test.py 2 3if __name__ == "__main__": 4#〜〜省略〜〜 5q = pd.merge(a_df, b_df, on='id') 6q.to_csv(f'./test.csv', header=True, index=False, sep='\t')

試したこと

参照:発生している問題

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

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

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

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

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

y_waiwai

2021/06/28 10:44

で、しつもんはなんでしょうか
000mm

2021/06/28 10:50

シェルスクリプト側でpythonファイルの実行結果(csvファイル)の出力先を指定する方法が知りたいです。
y_waiwai

2021/06/28 10:51

それを質問文の方に追記しましょう
guest

回答5

0

できればpythonのファイルの方は触りたくないので、シェルスクリプト側でどうにかできるといいのですが…。

無理矢理になるけど、bashスクリプトで pythonのソース書き換えしてしまうとか。

bash

1#!/bin/bash 2outputFilePath=/tmp/change.csv 3sed "s!f'./test.csv'!f'$outputFilePath'!" test.py | python

投稿2021/06/28 13:15

編集2021/06/28 13:44
Y.H.

総合スコア7918

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

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

0

できればpythonのファイルの方は触りたくないので、シェルスクリプト側でどうにかできるといいのですが…。

./test.csvに書き込むようにPythonプログラムが書かれているのは理解できていますか?

それを変更しないのなら、一旦そのPythoプログラムで./test.csvに書いてから、そのファイルをmvコマンドで目的のものにリネーム/移動する事になります。

投稿2021/06/28 10:57

otn

総合スコア85901

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

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

0

ベストアンサー

sys.argを使って、コマンドライン引数を受け取り、そこに出力するようにしましょう。

投稿2021/06/28 10:44

ppaul

総合スコア24670

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

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

000mm

2021/06/28 10:48

できればpythonのファイルの方は触りたくないので、シェルスクリプト側でどうにかできるといいのですが…。
BeatStar

2021/06/28 11:00

横からすみません。 質問者さん、それは無理ですよ。 せいぜい、『Pythonでカレントディレクトリに生成』して『シェルスクリプトで移動』しかないと思いますが。
guest

0

結果的に、pythonファイルの方を変更いたしました…。
ご回答いただいた皆様、ありがとうございました。

投稿2021/07/01 09:45

000mm

総合スコア6

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

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

0

出力先を sys.stdout にしたらよさそげ (シェルスクリプトのリダイレクトで制御できる)

https://deepage.net/features/pandas-tocsv-light.html

まあ、それくらいの変更も許容できないなら仕方ありませんが…

投稿2021/06/28 11:51

takasima20

総合スコア7464

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問