<p>这里有一个解决这个问题的新手方法。该方法很简单,但可以考虑任意数量的<code>image types</code>(orig、crypt等)</p>
<h2>代码</h2>
<pre><code>import os
import shutil
image_type = ['orig', 'crypt', 'hd', 'sd']
files_list = ['PAT_01_01_crypts.png', 'PAT_01_02_crypts.png', 'PAT_01_03_crypts.png', 'PAT_01_01_orig.png', 'PAT_01_02_orig.png', 'PAT_01_03_orig.png', 'myfile_hd.png', 'yourfile_sd.png']
# Check if directory exists. If not, create it
for folder in image_type:
if os.path.isdir(f"./{folder}"):
pass
else:
os.mkdir(f"./{folder}")
# Move files
for fname in files_list: # traverse the files list
for img in image_type: # compare which type it matches to
if img in fname:
shutil.move(f"./{fname}", f"./{img}/{fname}") # move it to the respective directory
break
# Print contents of each folder
for folder in image_type:
print(f"\n\nContents of {folder}::::")
print(os.listdir(f"./{folder}"))
</code></pre>
<h2>输入</h2>
<pre><code>PAT_01_01_crypts.png
PAT_01_02_crypts.png
PAT_01_03_crypts.png
PAT_01_01_orig.png
PAT_01_02_orig.png
PAT_01_03_orig.png
myfile_hd.png
yourfile_sd.png
</code></pre>
<h2>输出</h2>
<pre><code>Contents of orig::::
['PAT_01_01_orig.png', 'PAT_01_02_orig.png', 'PAT_01_03_orig.png']
Contents of crypt::::
['PAT_01_01_crypts.png', 'PAT_01_02_crypts.png', 'PAT_01_03_crypts.png']
Contents of hd::::
['myfile_hd.png']
Contents of sd::::
['yourfile_sd.png']
</code></pre>