#調べたこと 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
エラーメッセージは正確ですか?
python XXX.py と実行して「 XXXは、内部コマンドまたは~」と出たのですか
一言一句そのままです XXXは実行したかった.pyファイルの名前です
うーん、よくわかりませんね…
python にパスが通ってない場合は「 'python' は、内部コマンドまたは~」と出るはずです。
(1) シングルクォートがついてないのが不可解(もしかしてコマンドプロンプトが出力しているのではない?)
(2) スクリプト名(しかも .py 無し)というのも不可解。XXX.py の中で XXX を実行しようとしているのかも
py -3.9 XXX.py
だとどうでしょうか?
XXX は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と返されます...
> os.system('decrypt {} {}'.format(input_path, output_path))
この行で「decrypt」というコマンドを実行しようとしていますね。
XXXがXXX.pyの中に存在するので少し自分でも見ていたのですが,恐らくint32_t様のおっしゃる通りだと思います.
回答1件
あなたの回答
tips
プレビュー