擅长:python、mysql、java
<p>你有几个问题。其中之一是unixshell缩写(<code>~</code>)不会像在unixshell中那样被Python自动解释。在</p>
<p>第二个问题是,在Unix中编写一个嵌入斜杠的文件路径不会有好运气。如果你想在以后找到它们的话,你需要把它们转换成别的东西。您可以使用像<code>response.url.replace('/','_')</code>这样简单的东西来实现,但这会给您留下许多其他可能存在问题的字符。您可能希望一次性“消毒”所有这些。例如:</p>
<pre><code>import os
import urllib
def write_response(response, filedir='~'):
filedir = os.path.expanduser(dir)
filename = urllib.quote(response.url, '')
filepath = os.path.join(filedir, filename)
with open(filepath, "w") as f:
f.write(response.body)
</code></pre>
<p>它使用<code>os.path</code>函数来清理文件路径,并使用<code>urllib.quote</code>将URL清理为适合文件名的内容。有一个对应的<code>unquote</code>来逆转这个过程。在</p>
<p>最后,当您写入文件时,您可能需要根据响应是什么以及您希望如何编写它们而稍微调整一下。如果您希望它们以二进制形式编写,则需要<code>"wb"</code>而不仅仅是{<cd7>}作为文件模式。或者如果是文本,它可能需要某种编码(例如,to <code>utf-8</code>)。这取决于你的回答是什么,以及它们是如何编码的。在</p>