I have a simple python script:
$ cat ~/simple.py import os import sys def write_greeting(inpath): outpath = os.path.splitext(inpath)[0] + '.txt' with open(outpath, 'w') as f: f.write('hello world!') sys.stdout.write('wrote {}!'.format(outpath)) return None if __name__ == '__main__': write_greeting(sys.argv[1]) For example, running
$ python ~/simple.py ~/path/to/foo.bar creates a text file ~/path/to/foo.txt reading hello world!. After ~/path/to/foo.txt is created, the message wrote ~/path/to/foo.txt! is printed to stdout.
Now, say I'm editing a file ~/path/to/foo.bar in emacs. I want to run simple.py on the file I'm currently editing from within emacs. After my script is called, I want to insert the contents from stdout where my cursor is.
Is this possible?
Essentially, I'd like to automate the sequence of commands:
C-u M-! python ~/simple.py ~/path/to/current/file/name with a function M-x my-python-script.
call-process. Here's an example usage.