示例#1
0
    def testUnicode(self):
        writer = csv.Writer()
        writer.WriteRow(["jodła", "świerk", "dąb"])
        writer.WriteRow(["żyto", "jęczmień", "ryż"])

        self.assertEqual(writer.Content(),
                         "jodła,świerk,dąb\nżyto,jęczmień,ryż\n")
示例#2
0
文件: vfs.py 项目: threatintel-c/grr
    def _GenerateBodyExport(self, file_infos):
        for path, st, hash_v in file_infos:
            if st is None:
                continue

            writer = csv.Writer(delimiter=u"|")

            if hash_v and hash_v.md5:
                hash_str = hash_v.md5.HexDigest()
            else:
                hash_str = u""

            # Details about Body format:
            # https://wiki.sleuthkit.org/index.php?title=Body_file
            # MD5|name|inode|mode_as_string|UID|GID|size|atime|mtime|ctime|crtime
            writer.WriteRow([
                hash_str,
                path,
                str(st.st_ino),
                str(st.st_mode),
                str(st.st_uid),
                str(st.st_gid),
                str(st.st_size),
                str(int(st.st_atime or 0)),
                str(int(st.st_mtime or 0)),
                str(int(st.st_ctime or 0)),
                str(int(st.st_crtime or 0)),
            ])

            yield writer.Content().encode("utf-8")
示例#3
0
    def testMultipleRows(self):
        writer = csv.Writer()
        writer.WriteRow(["foo", "quux"])
        writer.WriteRow(["bar", "norf"])
        writer.WriteRow(["baz", "thud"])

        self.assertEqual(writer.Content(), "foo,quux\nbar,norf\nbaz,thud\n")
示例#4
0
  def _GenerateDefaultExport(self, items):
    writer = csv.Writer()

    # Write header. Since we do not stick to a specific timeline format, we
    # can export a format suited for TimeSketch import.
    writer.WriteRow([u"Timestamp", u"Datetime", u"Message", u"Timestamp_desc"])

    for start in range(0, len(items), self.CHUNK_SIZE):
      for item in items[start:start + self.CHUNK_SIZE]:
        writer.WriteRow([
            str(item.timestamp.AsMicrosecondsSinceEpoch()),
            str(item.timestamp),
            item.file_path,
            str(item.action),
        ])

      yield writer.Content().encode("utf-8")
      writer = csv.Writer()
示例#5
0
    def ProcessSingleTypeExportedValues(self, original_value_type,
                                        exported_values):
        first_value = next(exported_values, None)
        if not first_value:
            return

        yield self.archive_generator.WriteFileHeader(
            "%s/%s/from_%s.csv" %
            (self.path_prefix, first_value.__class__.__name__,
             original_value_type.__name__))

        writer = csv.Writer()
        # Write the CSV header based on first value class and write
        # the first value itself. All other values are guaranteed
        # to have the same class (see ProcessSingleTypeExportedValues definition).
        writer.WriteRow(self._GetCSVHeader(first_value.__class__))
        writer.WriteRow(self._GetCSVRow(first_value))

        chunk = writer.Content().encode("utf-8")
        yield self.archive_generator.WriteFileChunk(chunk)

        # Counter starts from 1, as 1 value has already been written.
        counter = 1
        for batch in collection.Batch(exported_values, self.ROW_BATCH):
            counter += len(batch)

            writer = csv.Writer()
            for value in batch:
                writer.WriteRow(self._GetCSVRow(value))

            chunk = writer.Content().encode("utf-8")
            yield self.archive_generator.WriteFileChunk(chunk)

        yield self.archive_generator.WriteFileFooter()

        self.export_counts.setdefault(
            original_value_type.__name__,
            dict())[first_value.__class__.__name__] = counter
示例#6
0
    def testCustomDelimiter(self):
        writer = csv.Writer(delimiter="|")
        writer.WriteRow(["foo", "bar", "baz"])

        self.assertEqual(writer.Content(), "foo|bar|baz\n")
示例#7
0
    def testSingleRow(self):
        writer = csv.Writer()
        writer.WriteRow(["foo", "bar", "baz"])

        self.assertEqual(writer.Content(), "foo,bar,baz\n")
示例#8
0
    def testEmpty(self):
        writer = csv.Writer()

        self.assertEqual(writer.Content(), "")