User Name Password Register
DaniWeb IT Discussion Community
All
What is DaniWeb IT Discussion Community?
You're currently browsing the Python section within the Software Development category of DaniWeb, a massive community of 428,371 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 3,506 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our Python advertiser: Programming Forums
Views: 446 | Replies: 5
Reply
Join Date: Apr 2008
Posts: 26
Reputation: FreezeBlink is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 0
FreezeBlink FreezeBlink is offline Offline
Light Poster

Crazy question -- Python + Command Line

  #1  
May 21st, 2008
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?
AddThis Social Bookmark Button
Reply With Quote  
Join Date: Apr 2008
Posts: 122
Reputation: Freaky_Chris is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 12
Freaky_Chris's Avatar
Freaky_Chris Freaky_Chris is offline Offline
Junior Poster

Re: Crazy question -- Python + Command Line

  #2  
May 21st, 2008
indeed it is possible, very easy actually

  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

  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

  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 4:20 am.
Reply With Quote  
Join Date: Apr 2008
Posts: 26
Reputation: FreezeBlink is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 0
FreezeBlink FreezeBlink is offline Offline
Light Poster

Re: Crazy question -- Python + Command Line

  #3  
May 21st, 2008
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 12:45 pm.
Reply With Quote  
Join Date: Apr 2008
Posts: 26
Reputation: FreezeBlink is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 0
FreezeBlink FreezeBlink is offline Offline
Light Poster

Re: Crazy question -- Python + Command Line

  #4  
May 21st, 2008
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")?
Reply With Quote  
Join Date: Apr 2008
Posts: 122
Reputation: Freaky_Chris is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 12
Freaky_Chris's Avatar
Freaky_Chris Freaky_Chris is offline Offline
Junior Poster

Re: Crazy question -- Python + Command Line

  #5  
May 22nd, 2008
You should look into the os module as i suggested as this allows you to do alot of things. here is an example

  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

  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
Reply With Quote  
Join Date: Mar 2008
Posts: 15
Reputation: rikxik is an unknown quantity at this point 
Rep Power: 1
Solved Threads: 1
rikxik rikxik is offline Offline
Newbie Poster

Re: Crazy question -- Python + Command Line

  #6  
May 23rd, 2008
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:

  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 3:58 am.
Reply With Quote  
Reply

Only community members can participate in forum threads. You must register or log in to contribute.

DaniWeb Python Marketplace
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

Thread Tools Display Modes

Other Threads in the Python Forum

All times are GMT -4. The time now is 6:59 am.
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC