Hi Cannon,

I haven't used fileinput in python, but I believe it is looking for a file to 
be passed in as an argument. You can simply pass the string "python <path to 
script> <path to file>" as the first parameter in LEP. For example


$pythonScript:=Convert path system to POSIX(Get 4D folder(Database 
folder)+"script.py") //Path to python script
$jsonFile:=Convert path system to POSIX(Get 4D folder(Database 
folder)+"json.txt") // Path to file
$in:=""
$exec:="python "+$pythonScript+" "+$jsonFile
$result:=LAUNCH EXTERNAL PROCESS($exec;$in;$out;$err)

Tim Tse


________________________________
From: 4D_Tech <[email protected]> on behalf of James Crate via 
4D_Tech <[email protected]>
Sent: Wednesday, February 15, 2017 1:37:16 PM
To: 4D iNug Technical
Cc: James Crate
Subject: Re: LEP and Python Script

On Feb 15, 2017, at 2:57 PM, Cannon Smith via 4D_Tech <[email protected]> 
wrote:
>
> I’ve been given a python script which takes JSON and returns JSON with all 
> the keys alphabetized which is helpful for comparing revisions in version 
> control. However, I can’t figure out how to use LAUNCH EXTERNAL PROCESS and 
> pass some JSON to it and get the result back. If anyone here knows how it can 
> be done, I’d appreciate the help (I know nothing about python). MacOS if it 
> matters.
>
> Here is the script:
>
> #!/usr/bin/python
> import fileinput
> import json
> if __name__ == "__main__":
>  jsonStr = ''
>  for a_line in fileinput.input():
>    jsonStr = jsonStr + ' ' + a_line.strip()
>  jsonObj = json.loads(jsonStr)
>  print json.dumps(jsonObj, sort_keys=True, indent=2)

I’m not familiar with python, but according to the docs, fileinput.input() will 
use stdin (standard input) if no file names are provided as arguments.

LEP provides a parameter for stdin, so theoretically you should be able to pass 
the JSON to the script using LEP's inputStream parameter and get the result 
using LEP's outputStream variable. If this doesn’t work, a bug should be filed 
because there isn’t any other purpose for the inputStream parameter I can think 
of.

The script should be executable like any other script, by setting it to 
executable (chmod +x script.py).

https://docs.python.org/2/library/fileinput.html
http://doc.4d.com/4Dv15/4D/15.4/LAUNCH-EXTERNAL-PROCESS.301-3274883.en.html

Jim Crate

**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[email protected]
**********************************************************************
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:[email protected]
**********************************************************************

Reply via email to