擅长:python、mysql、java
<p>要“自动检测新扩展名”,只需浏览所有文件并查看其扩展名:</p>
<pre><code>for f in os.listdir():
name, ext = os.path.splitext(f)
ext = ext.lstrip('.')
if ext:
os.mkdirs(ext)
move_file(filename, ext)
</code></pre>
<p>请注意,如果您的一些“扩展”实际上不是扩展,那么这将不起作用。我注意到您现有的代码搜索像<code>*txt</code>和<code>*iso</code>这样的东西,这当然会匹配像<code>this_is_not_txt</code>和<code>spam.aniso</code>这样的东西。如果这是一个必需的特性而不是一个bug,那么在代码中实现它之前,您必须为您所说的“扩展”想出一些规则</p>
<p>还请注意,完全没有扩展名的文件将保留在原来的位置(因为<code>if ext:</code>),而扩展名为空的文件(只有<code>.</code>)也将保留在原来的位置(因为<code>if</code>检查发生在<code>lstrip</code>之后)。当然,如果需要的话,您可以更改其中的任何一个(尽管您需要提供一个子目录名,这个子目录名不能与任何可能的实际扩展名含糊不清……)。你知道吗</p>
<p>最后,这不会处理“双扩展名”—例如,<code>.tar.gz</code>文件将进入与<code>.gz</code>相同的目录。同样,如果需要,这很容易改变。你知道吗</p>