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

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

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

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

1175閲覧

python pandas 複数のCSVファイルをbatchファイルを使用して一気にドラッグアンドドロップで読み込ませるには?!

eqeqe

総合スコア15

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/06/01 23:16

編集2021/06/02 00:44

python pandas 3枚のCSVファイル(1.csv / b.csv / z.csv)をbatchファイルを使用して一気にドラッグアンドドロップで読み込ませるには?!

1.csv 1枚の場合では

.bat側

python "test.py" %1 %2 %3 %4 %5 %6 %7 %8 %9

test.py側

dpath = os.path.basename(sys.argv[0]) #Pythonのパスを取得
csv_name = sys.argv[1]

で、batchファイルからcsvを読み込ませることはできるのですが、
これを複数のファイルで読み込ませたいのですが

.bat側

python "test.py" %1 %2 %3 %4 %5 %6 %7 %8 %9

test.py側

dpath = os.path.basename(sys.argv[0]) #Pythonのパスを取得
csv_name = sys.argv[1]
csv_name2 = sys.argv[2]
csv_name3 = sys.argv[3]

だと、読み込むことは読み込めるのですが読み込む順番が意図しない場合があり
その後の各csvファイルでの個別の操作に影響が出てしまいました、、

例えばcsv_name = sys.argv[1] の[1]を相対パスの"1.csv"に固定する
同じように
csv_name = sys.argv[2] = b.csv
csv_name = sys.argv[3] = z.csv

もしくは、
1.csv = sys.argv[1]
b.csv = sys.argv[2]
z.csv = sys.argv[3]

ような感じで読み込む際に指定することは可能でしょうか?

追記 質問スキルが低くて申し訳ありません。

1.csv,b.csv z.csv があってドラッグアンドドロップ読み込ませる場合
特定の変数に特定のファイル名(1.csv,b.csv z.csvそれぞれを)を代入したいというニュアンスです。

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

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

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

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

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

bsdfan

2021/06/02 00:37

bathじゃなくてbatch(バッチ)ですね。
eqeqe

2021/06/02 00:44

ご指摘感謝いたします。修正しました! いつもありがとうございます!
guest

回答1

0

ベストアンサー

特定の変数に特定のファイル名を代入したいという事でしょうか??
csv_name = sys.argv[2] = b.csv
これらの意図するところは、csv_nameにb.csvを代入したいというのでしたら、普通に、
csv_name = b.csv
こうなるだけでは?

投稿2021/06/01 23:31

udon-ken

総合スコア657

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

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

eqeqe

2021/06/01 23:51 編集

特定の変数に特定のファイル名を代入したいという事でしょうか?? はい、質問がわかりにくくて済みませんが、 おっしゃるとおり 1.csv,b.csv z.csv があってドラッグアンドドロップ読み込ませる場合 特定の変数に特定のファイル名(1.csv,b.csv z.csvそれぞれを)を代入したいという事なんです
udon-ken

2021/06/02 00:12

いえ、その特定の変数に特定のファイル名を代入するという事であれば、引数などを使わずにストレートに 特定の変数 = 特定のファイル名 と書くしかないのではないかなあという事です。 または、ファイル名自体を読み込みたい(処理したい)順にソートできるように付けて、ソートした後に変数に割り当てるとか。 今、たまたまかもしれませんが、 1.csv b.csv z.csv となっているので、どんな順で引数に入っても、ソートしたらこの順になりますね。 ファイル名が常にこうなら、そういうプログラムでもいいのかなあと。
eqeqe

2021/06/02 01:00

ありがとうございます! 確かにこの順番でソートされています。試しにファイル名を全然違うものに変えてみたら順番が変わりました。 ソートの順番は変えられなくて数字英字の配列順でソートされるということなのでしょうか?
udon-ken

2021/06/02 02:13

文字列のソートは、組み込み関数のソートだと文字のUnicodeコード順になり、これは変更できません(逆順にはできる)。 もちろん自作関数なら変えられますが・・・ というか、整理して考えましょう。 まず、複数ファイルをドラッグアンドドロップした場合、引数群に入るファイル名の順番は不定です。 その中の特定のファイル名を特定の変数に格納したい場合、、、順番は利用できないので、 特定の変数 = 特定のファイル名 とするしかなく、そうであれば結局、引数自体が不要。 理由は if 特定のファイル名 in sys.arg[1:]:   特定の変数名 = 特定のファイル名 みたいな事に、特定のファイル名が引き渡されたかどうか確認する以外の意味がないので、確認が不要ならif文が不要になるから。 不特定のファイル名を特定の変数に格納したいのなら、引き渡された引数群の何番目をどの変数に入れるか指定しないといけないですが・・・ 上述の通り、引数群そのままでは何番目とういうのは不定である為、何らかの法則にしたがって並べかえる他ありません。 その「何らかの法則」が一般的にはソートによる方法しかありませんし、そのソートの法則をもし自作関数でで変えるとしても、結局細かい設定を書くことになる上、通常は特定の法則でソートする以上のものになりません。 通常はと書きましたが、通常を超えた極端なコードを書くとしたら、 「受け取った引数群のうちz.csvは先頭に、3.csvは二番目にo.csvは三番目に・・・並べかえる」みたいになりますが、そこまで書くと結局、 特定の変数名 = 特定のファイル名 と書くのと同じ事になり、意味が有りません。 なんとなくですが、順番に意味があるファイル群を一括ドロップは無理があるのかなあと思います。 やるとしたら、ファイル名に意味を持たせるとか、ファイルの中身(例えば先頭行)に意味を持たせるとかが無難な気はします。 もちろん、単純なソートで事足りるならいいんですけど、その辺はファイル名がちゃんと付けられるかどうかによるので、私の方では判断しかねますが。
eqeqe

2021/06/02 04:18 編集

丁寧な長文でのご説明に感謝申し上げます! そうですね、説明を読むうちに今回の件は引数の呼び出しは不要だと理解できました。 元々任意の1枚のCSVファイルを読み込ませる目的で教わったやり方だったので咀嚼に時間がかかましたが、踏まえてテストすると引数をわざわざ呼び出さなくても固定ファイル名ならそのままCSVファイル名を指定するとちゃんと呼び出せましたし、 固定でない場合で複数読ませて尚且つこういう処理はあまり実用的ではない何となくわかる気がしました。 おかげさまで今回は引数を使用せず目的が叶いました。 説明するのも上手く出来ないレベルの中、丁寧にこちらの考えを拾って答えてくださってとても嬉しかったです。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問