code: def scan_file(self,
                    this_file,
                    notify_url=None,
                    notify_changes_only=None,
                    from_disk=True,
                    filename=None,
                    timeout=None):
          
          params = {'apikey': self.api_key}
          if from_disk:
              if not filename:
                  filename = os.path.basename(this_file)
              files = {'file': (filename, open(this_file, 'rb').read())}
          else:
              if filename:
                  files = {'file': (filename, this_file)}
              else:
                  files = {'file': this_file}
  
          try:
              response = requests.post(
                  self.base + 'file/scan', files=files, params=params, proxies=self.proxies, timeout=timeout)
          except requests.RequestException as e:
              return dict(error=str(e))
  
          return _return_response_and_status_code(response)
docs: Submit a file to be scanned by VirusTotal.
  
          Allows you to send a file for scanning with VirusTotal. Before performing your submissions we encourage you to
          retrieve the latest report on the files, if it is recent enough you might want to save time and bandwidth by
          making use of it. File size limit is 32MB, in order to submmit files up to 200MB in size you must request a
          special upload URL.
  
          :param this_file: The file to be uploaded.
          :param notify_url: A URL to which a POST notification should be sent when the scan finishes.
          :param notify_changes_only: Used in conjunction with notify_url. Indicates if POST notifications should be
                                      sent only if the scan results differ from the previous analysis.
          :param from_disk: If True we read the file contents from disk using this_file as filepath. If False this_file
                            is the actual file object.
          :param filename: Specify the filename, this overwrites the filename if we read a file from disk.
          :param timeout: The amount of time in seconds the request should wait before timing out.
  
          :return: JSON response that contains scan_id and permalink.