<p><strong>注</strong>:此答案是在OP提供的一些澄清之后编辑的,因此它不是«实际»答案,因为它没有提供最终的预期结果。你知道吗</p>
<hr/>
<p>QDataStream<code><<</code>操作数不接受python字符串或QObject:</p>
<pre><code>>>> stream << self.something.text()
TypeError: unsupported operand type(s) for <<: 'QDataStream' and 'str'
</code></pre>
<p>操作数仅适用于已知的兼容和可序列化的Qt类型(请参阅PyQt<a href="https://www.riverbankcomputing.com/static/Docs/PyQt5/api/qtcore/qdatastream.html" rel="nofollow noreferrer">^{<cd2>}</a>的文档),如QByteArray、QdateTime等。否则,最好使用<code>QDataStream.write*</code>方法:</p>
<pre><code>>> stream.writeQString(self.something.text())
</code></pre>
<h2>问题编辑和评论后更新</h2>
<p>Outlook使用的<code>msg</code>格式不被视为“通用”标准,我无法为您的问题提供明确完整的答案。您需要深入研究<a href="https://interoperability.blob.core.windows.net/files/MS-OXMSG/%5bMS-OXMSG%5d.pdf" rel="nofollow noreferrer">^{<cd5>} Outlook Item file format</a>以了解如何编写自己的文件。你知道吗</p>
<p>也就是说,mime数据对象的每个和任何字段都可以通过<code>mimeData.data([format])</code>进行访问,该<code>mimeData.data([format])</code>返回一个QByteArray,该QByteArray准备写入一个QDataStream,该QDataStream与一个<em>打开的</em>QFile一起使用。这也是<code>out << event.mimeData()</code>不起作用的原因:它是一个QObject,不能直接序列化。你知道吗</p>
<p>例如,根据您之前提供的格式,您可以使用以下方法访问“FileNameW”项:</p>
<pre><code>mimeData.data('application/x-qt-windows-mime;value="FileNameW"')
</code></pre>
<p>现在由您按照上面给出的文档“构建”自己的msg文件。我知道这不是一个<em>实际的</em>答案,但我不使用Outlook,甚至不能提供最简单的示例,因为我无法相应地测试它。你知道吗</p>
<p>最后一个建议是:记住在最后调用<code>file.close()</code>,否则文件根本不会被写入。你知道吗</p>