Search code examples
pythonioerror

Why do I get this IOerror13 ? Using python


import sys
import os
import re
import ftplib

os.system('dir /S "D:\LifeFrame\*.jpg" > "D:\Python\placestogo.txt"')   #this is where to search.
dat = open('placestogo.txt','r').read()

drives = re.findall(r'.\:\\.+.+',dat)
for i in range(len(drives)):
    path = drives[i]
    os.system('dir '+ path +'\*.jpg > D:\python\picplace.txt')
    picplace = open('picplace.txt','r').read()
    pics = re.findall(r'\w+_\w+.\w+..jpg|IMG.+|\w+.jpg',picplace)
    for i in range(len(pics)):
        filename = pics[i]
        ftp = ftplib.FTP("localhost")
        print ftp.login("xxxxxxxx","xxxxxxxx")
        ftp.cwd("/folder")
        myfile = open(path,"rb")
        print ftp.storlines('STOR ' + filename, myfile)
        print ftp.quit()
        sys.exit()

i am trying to copy all of those files to my ftp server but it gives me that error:

d:\Python>stealerupload.py
230 Logged on
 Traceback (most recent call last):
  File "D:\Python\stealerupload.py", line 22, in <module>
    myfile = open(path,"rb")
IOError: [Errno 22] invalid mode ('rb') or filename: '"D:\\LifeFrame"'

any one knows where is the problem ? I am running as administrator and folder should have permissions


Solution

  • The error seems pretty obvious. You are trying to open a directory path, which is neither possible nor what you actually want to do. This bit:

    for i in range(len(drives)):
        path = drives[i]
        ...
        for i in range(len(pics)):
            ...
            myfile = open(path,"rb")
    

    Inside the loop you are setting path to be one of your drives elements. each of these items appears to be a directory path. Then you try to open path later, which is a directory path and not a file.