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

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

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

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

Q&A

解決済

1回答

2292閲覧

pathが通っているのにコマンドプロンプトでpythonが実行出来ない

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

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

0グッド

3クリップ

投稿2021/04/14 04:56

編集2021/04/14 08:39
#調べたこと python --version >>Python 3.9.4 C:\Users\user>py --list >>Installed Pythons found by py Launcher for Windows >> -3.9-64 * >> -3.8-64 #エラー箇所 python XXX.py >>XXX は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。

XXX.pyはカレントディレクトリに存在しています.

バッチ処理等を視野に入れたプログラムを作ったので,コマンドプロンプトで久しぶりに実行したら上記のような現象が起きました.普段VScodeで開発していたため気づかなかったです.

環境変数を確認しても,

C:\Users\user\AppData\Local\Programs\Python\Python39\Scripts\ C:\Users\user\AppData\Local\Programs\Python\Python39\

がpathに存在しており,何が起きているのかよくわからず,質問に至りました.
よろしくお願いいたします.

追記 XXX.pyのコードを貼付します.ちなみにdecrypt.pyというファイルです.

decrypt.py

1# coding=utf-8 2from __future__ import print_function 3import os 4import argparse 5import glob 6import fnmatch 7 8 9def valid(input_path): 10 file = open(input_path, 'rb') 11 magic = file.read(12) 12 return magic == b'bogehcollege' 13 14 15def decrypt(input_path): 16 path, file = os.path.split(input_path) 17 file_split = file.split('.') 18 if len(file_split) == 1: 19 fname = file_split[0] 20 ext = '' 21 else: 22 fname = file_split[0] 23 ext = '.' + file_split[1] 24 output_path = os.path.join(path, fname + '_decrypt' + ext) 25 if not valid(input_path): 26 print('[x] Not an encrypted file: {}'.format(input_path)) 27 return 28 if os.name == 'posix': # Unix system need prefix 29 os.system('./decrypt {} {}'.format(input_path, output_path)) 30 else: 31 os.system('decrypt {} {}'.format(input_path, output_path)) 32 33 34def find_files(directory, pattern): 35 for root, dirs, files in os.walk(directory): 36 for basename in files: 37 if fnmatch.fnmatch(basename, pattern): 38 filename = os.path.join(root, basename) 39 yield filename 40 41 42def main(): 43 parser = argparse.ArgumentParser() 44 parser.add_argument( 45 'file', help='Path of file or directory to be decrypted', type=str) 46 p = parser.parse_args() 47 path = p.file 48 if os.path.isfile(path): 49 decrypt(p.file) 50 else: 51 if not path.endswith(os.path.sep): 52 path += os.path.sep 53 flist = find_files(path, '*.png') 54 for f in flist: 55 decrypt(f) 56 57 58if __name__ == '__main__': 59 main() 60

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

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

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

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

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

sigsegv

2021/04/14 05:06

エラーメッセージは正確ですか? python XXX.py と実行して「 XXXは、内部コマンドまたは~」と出たのですか
退会済みユーザー

退会済みユーザー

2021/04/14 05:31

一言一句そのままです XXXは実行したかった.pyファイルの名前です
sigsegv

2021/04/14 06:52

うーん、よくわかりませんね… python にパスが通ってない場合は「 'python' は、内部コマンドまたは~」と出るはずです。 (1) シングルクォートがついてないのが不可解(もしかしてコマンドプロンプトが出力しているのではない?) (2) スクリプト名(しかも .py 無し)というのも不可解。XXX.py の中で XXX を実行しようとしているのかも
miyabi_takatsuk

2021/04/14 07:44

py -3.9 XXX.py だとどうでしょうか?
退会済みユーザー

退会済みユーザー

2021/04/14 08:36

XXX は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と返されます...
int32_t

2021/04/14 08:49

> os.system('decrypt {} {}'.format(input_path, output_path)) この行で「decrypt」というコマンドを実行しようとしていますね。
退会済みユーザー

退会済みユーザー

2021/04/14 08:51

XXXがXXX.pyの中に存在するので少し自分でも見ていたのですが,恐らくint32_t様のおっしゃる通りだと思います.
guest

回答1

0

ベストアンサー

python decrypt.pydecrypt.py は期待どおり実行されていて、os.system('decrypt ... の行でdecryptコマンドが見つからないためエラーになっているのだと思われます。

投稿2021/04/14 08:53

int32_t

総合スコア20987

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

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

退会済みユーザー

退会済みユーザー

2021/04/14 08:54

ありがとうございました,表題の目的が果たされましたのでBAとさせていただきます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問