Stupid Newbie Question Concerning CGI and Reading Forward Slashes

Steve Holden steve at holdenweb.com
Tue May 31 07:23:56 EDT 2005


Joey C. wrote:
> Hi, I want to make a configuration script for something and it needs to
> read inputs from an HTML file.  A couple of these inputs are textboxes
> that the user inputs a path in.  For example:
> Your Home Directory:
> [/home/me/public_html/]
> 
> So, I'm using Python to read these inputs and store them in a
> configuration file.  However, I cannot get the CGI to read the forward
> slashes (/).  It just leaves a blank area.  So, for example:
> Input: /usr/bin/sendmail
> Reads: sendmail
> 
> Input: /home/me/public_html/
> Reads: (Nothing.)
> 
In which case you must be doing something wrong, as this mechanism is 
pretty much tried and tested, with no such oddities recorded.

> params = cgi.FieldStorage()
> 
> def writep(key, name):
>   if params.has_key(key):
>     fconfig.write(name + ": " + os.path.split(params[key].value)[1] +
> ";\n")
> 
You do, I suppose, realize that os.path.split(...)[1] will specifically 
remove the leading components of the path?

> ^ This is the function for handling a key that is read by the cgi.  The
> "name" is the name that it stores the key under so the configuration
> file looks like:
> name: key;[Line Break]
> 
This all seems as expected.

Surely it should be the *key* (i.e. the name of the field in the HTML 
file) that you use to store the whole value, i.e.:

def writep(key, name):
   if params.has_key(key):
     fconfig.write("%s: %s" % (name, params[key].value)

> However, is there a way to get it to read the forward slashes?  If
> there isn't do you suggest having the user use a different character
> and adding a function in the script to substitute a forward slash for
> that character?
> 
> I tried looking for this for a long while, but maybe I didn't search
> enough.  Thanks for all of your help and I'm sorry if this is a
> question that has been asked 15 million times.
> 
> Joey C.
> 
It's not a common question, but it's relatively easily answered. You are 
splitting everything but the filename off with os.path.split and then 
complaining about the result! Once you stop doing that your problem is 
solved.

regards
  Steve
-- 
Steve Holden        +1 703 861 4237  +1 800 494 3119
Holden Web LLC             http://www.holdenweb.com/
Python Web Programming  http://pydish.holdenweb.com/




More information about the Python-list mailing list