Как написать скрипт из другого скрипта?

#python

#python

Вопрос:

Мне нужно выполнить приведенную ниже функцию на основе пользовательского ввода:

Если X=0 , то из строки URL ....Print('Success следует записать в файл и сохранить как test.py .

На серверной части сохраненный файл ( Test.py ) автоматически извлекался планировщиком задач из сохраненного местоположения и периодически запускался.

И да, у нас есть много примеров записи файла / запуска python из другого файла, но мы не смогли получить никакого сходства с написанием скрипта python из другого файла.

Я уверен, что не хватает нескольких основных шагов.

 if x=0:
   ### Need to write below content to a file amp; save as test.py######
   URL = "https://.../login"
   headers  = {"Content-Type":"application/json"}
   params = {
   "userName":"xx",
   "password":"yy"
   }
   resp = requests.post(URL, headers = headers, data=json.dumps(params))
   if resp.status_code != 200:
       print('fail')
   else:
       print('Success')]
else:
   ### Need to write below content to a file ######
   URL = "https://.../login"
   headers  = {"Content-Type":"application/json"}
   params = {
   "userName":"RR",
   "password":"TT"
   }
   resp = requests.post(URL, headers = headers, data=json.dumps(params))
   if resp.status_code != 200:
       print('fail')
   else:
       print('Success')
  

Ответ №1:

Для упрощения можно использовать тройные кавычки.

 if x==0:
    path = "test.py"
    string = """
import requests, json
URL = "https://.../login"
headers  = {"Content-Type":"application/json"}
params = {
    "userName":"xx",
    "password":"yy"
    }
resp = requests.post(URL, headers = headers, data=json.dumps(params))
if resp.status_code != 200:
    print('fail')
else:
    print('Success')
"""
else:
    path = "other.py"
    string = """
import requests, json
URL = "https://.../login"
headers  = {"Content-Type":"application/json"}
params = {
    "userName":"RR",
    "password":"TT"
    }
resp = requests.post(URL, headers = headers, data=json.dumps(params))
if resp.status_code != 200:
    print('fail')
else:
    print('Success')
"""

with open(path, 'w') as f:
    f.write(string)


  

Смотрите документы. Примерно треть пути вниз по странице.

Ответ №2:

 new_file = "print('line1')n" 
           "print('line2')n" 
           "print('line3')"

f = open('new_python.py', 'w')
print(new_file, file=f)
  

Ответ №3:

Если вы хотите сохранить его в файл, в конце концов, это должна быть строка.
Ваши два варианта файла выглядят довольно похоже, поэтому не записывайте его дважды:

 template ='''
URL = "https://.../login"
headers  = {"Content-Type":"application/json"}
params = {
   "userName":"%s",
   "password":"%s"
}
resp = requests.post(URL, headers = headers, data=json.dumps(params))
if resp.status_code != 200:
   print('fail')
else:
   print('Success')
'''

if x == 0:
    content = template % ("xx", "yy")
else:
    content = tempalte % ("RR", "TT")

with open("test.py", "w") as f:
   f.write(content)