擅长:python、mysql、java
<p>您可以提供<code>shelve.open</code>的完整路径名。请记住,在模块中,<code>__file__</code>是源文件所在的路径。所以你可以用它来构造完整的路径名。你知道吗</p>
<p>通常你会有这样的情况:</p>
<pre><code>BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
</code></pre>
<p>使用<code>os.path.join</code>连接目录和文件名。注意<code>os.path.dirname</code>和<code>os.path.abspath</code>的用法。你知道吗</p>
<p>所以你可以说:</p>
<pre><code>BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
shelve_db = os.path.join(BASE_DIR, 'oracle-shelve')
db = shelve.open('oracle-shelve')
</code></pre>
<p>这假设<code>orache-shelve</code>文件与<code>get_shelve_users</code>函数所在的模块(<code>dump_ora_shelve.py</code>)位于同一文件夹中。你知道吗</p>
<p>别忘了<code>__file__</code>。这就是使整个程序运行的原因,也就是说,使程序与当前目录隔离。你知道吗</p>