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

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

詳細はこちら
コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

Python

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

Q&A

解決済

1回答

1842閲覧

pythonでコマンドライン引数が渡せません

mmn

総合スコア1

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

Python

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

0グッド

0クリップ

投稿2021/03/05 11:47

コマンドライン引数を引き渡す際のエラーを直したいです。

 Learn python3 hard wayという本で引数の引き渡しを練習しています。
argvにscript, first,second,thirdを指定したのですが、同じエラーに悩まされています。
引き渡す変数が一つの時は問題なく実行されるのですが、二つ以上になるとエラーが出ます。
以下のコードは、変数が一つで実行されたものにfirst,second,thirdを足したコードです。
ご指摘やアドバイス等、よろしくお願いします。

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

[1]can't open file [2] no such file or directory

###from sys import argv script, first, second, third=argv print(f"このスクリプトの名前は:{script}") print(f"first変数の値は:{first}") print(f"second変数の値は:{second}") print(f"third変数の値は:{third}") ```python ### 試したこと *指定したディレクトリにファイルがあるか(ありました) *pathが通っているか(通っていました) *様々なサイトで見つけたコードを試してみました(二つ以上になるとダメでした) ### 補足情報(FW/ツールのバージョンなど) テキストエディタはatomを使っています。 MacBook Airのバージョンは11.2.2です。(最新のものだと思います。)

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

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

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

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

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

y_waiwai

2021/03/05 11:57

エラーメッセージとコードの対応が取れてません。 どういう出力になるんでしょうか
meg_

2021/03/05 12:16 編集

こちらで質問のコードを試したところ問題なく動きましたので、コメントを変更します。 問題が再現しませんでしたので、実際に入力したコマンドを教えてください。
mmn

2021/03/05 13:20

出力は、このスクリプトの名前は:['ex13.py'] となりました。 ターミナルで入力したのはpython3 ex13.py first second third です。コマンドとはこのことで合ってますか??
guest

回答1

0

ベストアンサー

argvはpythonを使ってコマンドラインで実行した場合の引数が入るものです。
(正確にはexec系のシステムコールなどを含みます)

動かしてみると正しく動きました。

Atomでの実行方法が間違っているのでしょう。

Anaconda Powershell Promptでの実行

Windows

1argv> type test.py 2from sys import argv 3 4script, first, second, third=argv 5 6print(f"縺薙・繧ケ繧ッ繝ェ繝励ヨ縺ョ蜷榊燕縺ッ:{script}") 7print(f"first螟画焚縺ョ蛟、縺ッ:{first}") 8print(f"second螟画焚縺ョ蛟、縺ッ:{second}") 9print(f"third螟画焚縺ョ蛟、縺ッ:{third}") 10argv> python test.py file1 abc 12345 11このスクリプトの名前は:test.py 12first変数の値は:file1 13second変数の値は:abc 14third変数の値は:12345

文字化けしているのは、utf-8で保存してあるからです。

Linux bashでの実行

bash

1$ cat test.py 2from sys import argv 3 4script, first, second, third=argv 5 6print(f"このスクリプトの名前は:{script}") 7print(f"first変数の値は:{first}") 8print(f"second変数の値は:{second}") 9print(f"third変数の値は:{third}") 10$ python test.py file1 abc 12345 11このスクリプトの名前は:test.py 12first変数の値は:file1 13second変数の値は:abc 14third変数の値は:12345

投稿2021/03/05 12:25

ppaul

総合スコア24670

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

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

mmn

2021/03/05 13:23

回答ありがとうございます。 自分のターミナルの表示を見ると zsh なのですが、bash と大差ありませんか?
ppaul

2021/03/05 13:36

同じだと思います。 私が載せたように、実行した結果を質問に載せてもらえば、回答者にとってわかりやすいです。
mmn

2021/03/05 13:58

ご丁寧にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問