#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""
посмотрите, действительно ли у вас есть какое-либо имя файла. Возможно, имя файла-это пустая строка, и она не может получить никаких аргументов.