On Friday 20 Jan 2017 01:24 CET, MRAB wrote: >> I wrote a function for switching to the correct virtual desktop and >> starting all the commands. I am also using with now: >> def do_desktop(desktop, commands, seconds_to_wait = 10): >> desktop_command = ('wmctrl -s ' + desktop).split() >> check_call(tuple(desktop_command)) > > You don't have to pass a tuple to check_call; it'll also accept a > list.
I did not know that. The same for Popen. >> for command_arr in commands: >> command = command_arr[0].split() >> log_directory = command_arr[1] >> directory = command_arr[2] >> if (directory != ''): >> chdir(directory) > > There's no need for the parentheses around the 'if' condition. Thanks, I always thought these were necessary. >> if (log_directory == 'NONE'): >> Popen(tuple(command.split())) >> else: >> log_file_name = log_directory.replace('%T', strftime('%F_%R')) >> with open(log_file_name, 'w') as log_file: >> Popen(tuple(command), stdout = log_file, stderr = STDOUT) >> if (directory != ''): >> set_default_dir() > > Using 'chdir' is generally a bad idea. > > 'Popen' will start the process and then continue, so what you're > doing is changing the directory, starting a process, and then > changing the directory again, possibly before the process has truly > started (i.e. you've told the OS to start it, but there might be a > small delay before that happens). Popen accepts a 'cwd' argument, > which sets the 'current working directory' for that process. I am using cwd now. >> Sometimes a command needs to be executed in a different directory, >> that is done like: commands = [ ['lein run', 'NONE', >> 'Clojure/Quotes'], ['xfce4-terminal --maximize --execute screen -S >> Clojure -c ~/.screenrcClojure', 'NONE', ''], >> ] >> do_desktop('6', commands, 30) >> > Why 'NONE'? Why not None? I am using None now. Thanks. -- Cecil Westerhof Senior Software Engineer LinkedIn: http://www.linkedin.com/in/cecilwesterhof -- https://mail.python.org/mailman/listinfo/python-list