"mode" doesn't run in python 3.5 subprocess -


i have encountered bit of conundrum while working on automation project.

when try run:

program = subprocess.run("mode") 

i get:

filenotfounderror: [winerror 2] system cannot find file specified 

however, when replace mode ipconfig:

program = subprocess.run("ipconfig") 

it runs fine.

anyone got explanation? using batch file run mode command, change arguments without editing batch file.

edit 1:

i tried using os.system:

os.system("mode") 

and worked.

edit 2:

now answer original problem understand going on.

in actual meaning of 'shell=true' in subprocess pretty says shell=true should shy away from.

filenotfounderror: [winerror 2] system cannot find file specified 

is tipped me off might want shell=true in subprocess call. if file can't found means 1 of 2 things:

  1. it's not on path.
  2. it's not actually file.

for instance, in linux:

$ echo echo: shell built-in command 

that makes pretty obvious there is no echo file. it's command that's built shell. may same thing when comes mode on windows. though this site seems suggest it's mode.com file. may try invoking that, in

subprocess.run('mode.com') 

that may work - @ least according 1 of the answers linked to

invoking via shell allow expand environment variables , file globs according shell's usual mechanism. on posix systems, shell expands file globs list of files. on windows, file glob (e.g., ".") not expanded shell, anyway (but environment variables on command line expanded cmd.exe).

so in case, perhaps mode isn't file, mode.com is, , since windows has spotty relationship casing, seems possible passing shell=true, windows shell happily takes mode , converts mode.com you, without it, tries execute file literally named mode, doesn't exist.


Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -