![]() |
Understanding subprocess.Popen - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Understanding subprocess.Popen (/thread-42112.html) |
Understanding subprocess.Popen - Pedroski55 - May-12-2024 The code I use is from here, Part 5 Just playing around with generators, I have a Python script to simulate a log file which is constantly updated, then another script, follow.py to get the last line of the log file. In the instructions it says, I should use subprocess like this: # the file logsim.py is here: '/home/pedro/myPython/yield/tutorial2008/generators/run/foo/logsim.py' # navigate to /home/pedro/myPython/yield/tutorial2008 in bash # then enter ./runserver.py # but this does not work p1 = subprocess.Popen(['python','logsim.py'], cwd='generators/run/foo')But I get this error Quote:# FileNotFoundError: [Errno 2] No such file or directory: 'python' However this works fine: foofile = '/home/pedro/myPython/yield/tutorial2008/generators/run/foo/logsim.py' p1 = subprocess.Popen([foofile], cwd='generators/run/foo')I don't understand subprocess.Popen(). The cwd command does not seem to work. What should I actually put in subprocess.Popen()? The whole script, which works fine, is this: #! /usr/bin/python3 # runservers.py # a simulated log file import subprocess import time print("Running simulated web servers") print() print("This runs a simulated server that writes these log files") print() print("run/foo/access.log") print("run/bar/access.log") print() print("Please leave this running as a background process while") print("working on examples related to infinite input streams") #p1 = subprocess.Popen(['python','logsim.py'], cwd='generators/run/foo') foofile = '/home/pedro/myPython/yield/tutorial2008/generators/run/foo/logsim.py' p1 = subprocess.Popen([foofile], cwd='generators/run/foo') time.sleep(600) #p2 = subprocess.Popen(['python','logsim.py'], cwd='generators/run/bar') barfile = '/home/pedro/myPython/yield/tutorial2008/generators/run/bar/logsim.py' p2 = subprocess.Popen([barfile], cwd='generators/run/bar') p1.wait() p2.wait() RE: Understanding subprocess.Popen - Gribouillis - May-12-2024 The strange thing in your error is that Popen does not find the 'python' command. Does 'python' work in a terminal or do you have to use 'python3' ? Try these commands for example >>> import subprocess as sp >>> sp.run(['python', '-c', 'import os; print(os.getcwd())']) ??? >>> sp.run(['python', '-c', 'import os; print(os.getcwd())'], cwd='generators/run') ???and the same with 'python3' RE: Understanding subprocess.Popen - Pedroski55 - May-12-2024 Aha! Thanks! Using python I just get a lot of blurb + But if I use python3, it works:sp.run(['python3', '-c', 'import os; print(os.getcwd())'])The above returns:
RE: Understanding subprocess.Popen - Gribouillis - May-12-2024 (May-12-2024, 09:54 AM)Pedroski55 Wrote: Using python I just get a lot of blurb +By curiosity what is your OS where 'python' is not a known command? In Ubuntu you could perhaps install the package 'python-is-python3'. RE: Understanding subprocess.Popen - Pedroski55 - May-12-2024 I use Ubuntu 22.04 LTS RE: Understanding subprocess.Popen - Gribouillis - May-12-2024 (May-12-2024, 10:20 AM)Pedroski55 Wrote: I use Ubuntu 22.04 LTSThen I recommend installing python-is-python3 RE: Understanding subprocess.Popen - Pedroski55 - May-12-2024 OK, thanks again! |