a simple 'for' question

Ethan Furman ethan at stoneleaf.us
Wed Jul 9 16:48:44 EDT 2008


Ben Keshet wrote:
> it didn't help.  it reads the pathway "as is" (see errors for both 
> tries).  It looks like it had the write pathway the first time, but 
> could not find it because it searched in the path/way instead of in the 
> path\way.  thanks for trying.

The form of slash ('\' vs '/') is irrelevant to Python.  At least on 
Windows.

> folders= ['1','2','3']
> for x in folders:
>     print x     # print the current folder
>     filename='Folder/%s/myfile.txt' %[x]
                                        ^- brackets not needed
>     f=open(filename,'r')
> 
> gives: IOError: [Errno 2] No such file or directory: 
> "Folder/['1']/myfile.txt"
> 

Pay attention to the error message.  Do you actually have the file 
"Folder\['1']\myfile.txt" on your machine?  And did you really want 
brackets and quotes?  Is the path located relative to whereever your 
python script is running from?  If it's an absolute path, precede it 
with a leading slash.

As far as the Python question of string substitution, "%s" % var is an 
appropriate way.

Your above code should read:
folders = ['1', '2', '3']
for x in folders:
    print x
    filename = 'Folder/%s/myfile.txt' % x
    f = open(filename, 'r')

Again, in order for that to work, you *must* have a path/file of 
'Folder\1\myfile.txt' existing from the same folder that this code is 
running from.  This is O/S related, not Python related.
--
Ethan



More information about the Python-list mailing list