943,890 Members | Top Members by Rank

Ad:
  • Python Discussion Thread
  • Unsolved
  • Views: 2456
  • Python RSS
May 21st, 2008
0

Crazy question -- Python + Command Line

Expand Post »
This is probably totally absurd, but...is it possible to, through Python, access the command line and use it? For instance, write a program that outputted all of the files in a given directory, much like

cd [directory]
dir

would?
Reputation Points: 10
Solved Threads: 0
Light Poster
FreezeBlink is offline Offline
26 posts
since Apr 2008
May 21st, 2008
0

Re: Crazy question -- Python + Command Line

indeed it is possible, very easy actually

Python Syntax (Toggle Plain Text)
  1. import os
  2. os.system("cd [directory]")

and if you want to make it so that you can type commands into your python commandline

Python Syntax (Toggle Plain Text)
  1. import os
  2. while True:
  3. command = raw_input("Enter Command->")
  4. if command.upper() == "Q":
  5. break
  6. try:
  7. os.system(command)
  8. except:
  9. print "invalid command\n"

One thing to note is that if you are just going to make specific calls to the command line to do one thing such as cd directory, you should use the python os module rather than just calling the comman shell.

To perform a cd command from python you ould use the following

Python Syntax (Toggle Plain Text)
  1. import os
  2. os.chdir("C:\\A folder")

This changes the current working directory to C:\Folder. From there you cann call other functions to make directories etc.

Python: os module or type help("os") in the Python command line

you should also look at os.name and os.path especially, help("os.name") etc for information on these.

Hope this helps, just be careful if you do allow user input to access the command prompt.

Chris
Last edited by Freaky_Chris; May 21st, 2008 at 5:20 am.
Reputation Points: 325
Solved Threads: 118
Master Poster
Freaky_Chris is offline Offline
702 posts
since Apr 2008
May 21st, 2008
0

Re: Crazy question -- Python + Command Line

That helps very much, thanks! One last thing, is it possible for Python to read the output of the commands it executes? For instance, storing the contents of a directory in a list?
Last edited by FreezeBlink; May 21st, 2008 at 1:45 pm.
Reputation Points: 10
Solved Threads: 0
Light Poster
FreezeBlink is offline Offline
26 posts
since Apr 2008
May 21st, 2008
0

Re: Crazy question -- Python + Command Line

Sorry--I just realized that wasn't worded very clearly. What I mean is this:

Is it possible for Python to store the output of calling os.system([command])? For instance, is it possible to store, in a list, all the results of os.system("dir")?
Reputation Points: 10
Solved Threads: 0
Light Poster
FreezeBlink is offline Offline
26 posts
since Apr 2008
May 22nd, 2008
0

Re: Crazy question -- Python + Command Line

You should look into the os module as i suggested as this allows you to do alot of things. here is an example

Python Syntax (Toggle Plain Text)
  1. import os
  2. for path, dirs, files in os.walk("C:"):
  3. print path, dir, files

ofcourse this is a very basic example and can be expanded greatly. You can loop through files

Python Syntax (Toggle Plain Text)
  1. for path, dirs, files in os.walk("C:"):
  2. for f in files:
  3. print f

so as you can see this way you can do alot of things this way. You can store the files use them to do other things with whatever.

Chris
Reputation Points: 325
Solved Threads: 118
Master Poster
Freaky_Chris is offline Offline
702 posts
since Apr 2008
May 23rd, 2008
0

Re: Crazy question -- Python + Command Line

You should indeed use existing/available python modules as you have many built-in functions available for exactly what you need instead of having to sift through output to do something specific. Using python modules instead of calling os-specific commands keeps your programs portable and they perform better.

However, just in case you wish to capture output from external commands, you can use popen:

python Syntax (Toggle Plain Text)
  1. import os
  2. p = os.popen("dir")
  3. for i in p:
  4. print i.strip() # prints the dir output one line at a time
  5. p.close()

There is module called "commands" which provides a nice wrapper around popen but I have not tried it on Windows.

HTH
Last edited by rikxik; May 23rd, 2008 at 4:58 am.
Reputation Points: 10
Solved Threads: 3
Newbie Poster
rikxik is offline Offline
17 posts
since Mar 2008

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in Python Forum Timeline: TCP SocketServer problem ( and hi, im new )
Next Thread in Python Forum Timeline: Can someone help me improve this function?





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC