os.system and quoted strings

Steven D'Aprano steve at REMOVE.THIS.cybersource.com.au
Tue Feb 27 10:16:55 EST 2007


On Tue, 27 Feb 2007 06:24:41 -0800, svata wrote:

> Hello,
> 
> as I'm new to python I've stumbled accros os.system and its not very
> well documented usage.

Documentation seems pretty good to me.

system(...)
    system(command) -> exit_status

    Execute the command (a string) in a subshell.

What more did you want to see?

> I use Win XP Pro and Python 2.5.
> 
> Here is the code snippet:
> 
> --------------------------------------------------------------------------------------------------
> 
> import time
> import os
> 
> dir = "C:\\Documents and Settings\\somepath\\"

I believe that Windows will accept forward slashes as directory
separators, so you can write that as:

dir = "C:/Documents and Settings/somepath/"


> fileName = time.strftime("%d%m%Y")
> os.system('gvim dir+fileName+".txt"')

This will execute the command 

gvim dir+fileName+".txt"

exactly as you typed it. I assume you don't have a file called
dir+fileName+".txt"


> The problem is that concatenated variable dir+fileName doesn't get
> expanded as expected.

Why would you expect them to be expanded? Does the documentation of
os.system say that the command string will be expanded before it is passed
to the subshell?


> Is there anything I omitted?

dir = "C:/Documents and Settings/somepath/"
fileName = time.strftime("%d%m%Y")
fileName = dir + fileName + ".txt"
os.system('gvim %s' % fileName)

That builds the command string correctly before passing it to a subshell.


-- 
Steven




More information about the Python-list mailing list