On 01/03/2014 08:03 PM, Sean Murphy wrote:
Hello all.

This is a newly question. But I wish to understand why the below code is 
providing different results.

import os, sys


if len(sys.argv) > 2:
   filenames = sys.argv[1:]
else
   print ("no parameters provided\n")
   sys.edit()

for filename in filenames:
   print ("filename is: %s\n" %filename)

The above code will return results like:

filename is test.txt

If I modify the above script slightly as shown below, I get a completely 
different result.

if len(sys.argv) > 2:
   filenames = sys.argv[1]
else
   print ("no parameters provided\n")
   sys.exit()

for filename in filenames:
   print ("filename is:  %s\n" % filename)

The result is the filename is spelled out a character at a time. The bit I am 
missing is something to do with splicing or referencing in Python.

Why am I getting different results? In other languages I would have got the 
whole content of the element when using the index of the array (list).


Sean
filename is: t
filename


How easy it is to overlook your own typos...  (No worry, everybody does it)   
;-)

In your first version you have:  filenames = sys.argv[1:]
which gives you a list of filenames (which is what you want).

In your second version you have:  filenames = sys.argv[1]
which is ONE item -- a string, not a list.  You left out the colon.

     -=- Larry -=-

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to