Как передать переменную php в скрипт python, чтобы python отображал переменную pass в браузере(xampp)

#python #php

Вопрос:

у меня есть html-файл <input type='file' name='loadfile'> , который я хочу сделать что-то вроде получения имени файла $nameOfTheFile = $_FILES["loadfile"]["name"]; при загрузке файла, а затем передать файл filename python с именем ( formatfiletoJSON.py ) и использовать файл python для чтения filename и форматирования в формат JSON. И используйте json.dumps() для распечатки формата json в браузере, чтобы мой файл Ajax мог получить ( formatfiletoJSON.py )

Проблема: В моем formatfiletoJSON.py не удается получить переменную имени файла в браузере( xampp localhost ) она пуста

print(sys.argv) <= это может показать в браузере

filename = sys.argv[1]
print(filename) <= это не будет отображаться в браузере, и если я его выполню в Visual студии Terminal кода он поставит эту ошибку

 File "c:xampphtdocsproject_realreceivephpvariable.py", line 5, in <module>
    filename = sys.argv[1]
IndexError: list index out of range
 

что я сделал:

php файл

    <?php
if (isset($_FILES["loadfile"]) > 0)
{
$nameOfTheFile = $_FILES["loadfile"]["name"];
$temp = shell_exec("python formatfiletoJSON.py "$nameOfTheFile"");
echo $temp;
}
 //html

<form action="<?php htmlentities($_SERVER['PHP_SELF'])?>" method="post" enctype="multipart/form-data">
        Select image to upload:
        <input type="file" name="loadfile" id="loadfile">
        <input type="submit" value="Upload Image" name="submit">
 </form>
 

formatfiletoJSON.py

 #!C:PythonPython39python.exe
import json
import sys
print ('Content-type: text/htmlnn')

filename = sys.argv[1]


with open(filename  '.py', 'r') as inFile:
     funcs = inFile.read().split('nn')
     # print(funcs)
     result = {}
     for elem in funcs:
            if elem.startswith('def'):
             sign, commands = elem.split(':')
             
            #  print(list(map(str.strip, commands.split('n')))[1:])
             commands = list(map(str.strip, commands.split('n')))[1:]
             result.update({sign : commands})
    # print(result)

y = json.dumps(result)
print(y)
 

Имя файла, которое я хочу передать в php (function.py)

 def step35():
    createsd()
    login44()
    delete12()   

def step66():
    autheticate()

def step3():
    send()

def step38():
    sendd()
   

def steppp():
    dsds()
 

Комментарии:

1. Почему вы делаете это на Python? PHP может прочитать сам файл.

2. PHP выполняется receivephpvariable.py , а не formatfiletoJSON.py .

3. Извините, там опечатка, уже переименованная в receivevariable. пи к formatfiletoJSON.py

4. Моя задача-создать веб-сайт, который использует php для загрузки файла python, извлечения строки внутри файла python и отображения ее в html . Поэтому моей первоначальной мыслью было создать другой файл python для извлечения и выполнения строковых манипуляций внутри файла python, который загружается с php и форматируется в JSON, чтобы я мог отправить его обратно на php

5. может быть, сначала отобразите $nameOfTheFile и "python formatfiletoJSON.py "$nameOfTheFile"" посмотрите, действительно ли у вас есть какое-либо имя файла. Возможно, имя файла-это пустая строка, и она не может получить никаких аргументов.