I've been trying to do a retrieval in python
            Asked
            
        
        
            Active
            
        
            Viewed 138 times
        
    -3
            
            
        - 
                    You don't have access to the `/tmp/` directory (odd). Try running Python with `sudo`. – Blender Nov 14 '11 at 16:56
 - 
                    @Blender: the script has access to `/tmp` otherwise there would be no `download_file(item)` in the traceback. It would fail sooner. – jfs Nov 14 '11 at 16:59
 - 
                    @J.F.Sebastian: What do you mean? The traceback points to the first line that accesses `/tmp/`. – Blender Nov 14 '11 at 17:16
 - 
                    @Blender: note: `23` line is *before* `13` (recursive call) – jfs Nov 14 '11 at 17:30
 - 
                    @J.F.Sebastian: Oh, I completely missed that recursive call (facepalm) – Blender Nov 14 '11 at 17:31
 - 
                    I figured out that I have no access to Footemp as it is owned by another user. So i had to create Attretrieve instead of Footemp and own that myself. Apparently, it works for the other user but still doesn't work for me. :( – Doomer Nov 14 '11 at 21:54
 - 
                    Also, the idea is to read from the list of file name, and retrieve each file into a target directory. I am not sure how much disk space the documents will take up; so we might want to modify the program to retrieve the files just to check the size, but not to store them. – Doomer Nov 14 '11 at 21:56
 
2 Answers
2
            
            
        - the second argument to 
urlretrieve()is a filename not a directory. - you're ignoring 
docidargument - you probably don't want to call 
download_file()recursively `folder_size`(with backtick) is a syntax error
Here's a script that downloads documents specified in /tmp/docids to /tmp/Footemp directory (it must exist):
outdir = "/tmp/Footemp"
with open("/tmp/docids") as f:
     for line in f:
         docid = line.strip()
         if not docid: continue # skip empty lines
         name = urllib.parse.quote_plus(docid)
         url = "http://foo.com/doc/" + name
         path = os.path.join(outdir, name)
         name, info = urllib.request.urlretrieve(url, path)
         print(info)
0
            
            
        The code looks to be correct, so it is likely a permissions error. Try saving to a file in a directory that you know you have write access to.
        Raymond Hettinger
        
- 216,523
 - 63
 - 388
 - 485