如何将具有指定扩展名的文件移动到 Python 中的新文件夹
How to move files with a specified extension to a new folder in Python
我正在尝试将一个文件夹中的文件移动到另一个文件夹,同时只移动扩展名为 .bmp
.
的文件
我正在使用 shutil.move()
方法,当我没有指定文件类型时它可以工作,但是一旦我指定它就停止工作。我曾尝试调试它,但无法弄清楚为什么我的代码无法正常工作。我没有得到任何回溯,没有任何反应。
import time
import os
import shutil
from datetime import datetime
today = datetime.now()
src = "."
dst = ('C:\Python\Image Compressor\File Saving\Archive\BDB040803_St14_' +
today.strftime('%d_%m_%Y'))
files = os.listdir(src)
for file in src:
if file.endswith(".bmp"):
shutil.move(os.path.join(src,file), os.path.join(dst,file))
将 src
替换为 files
行:
for file in src:
好的,我终于解决了我的问题。我将 post 我的代码放在这里,以供遇到此问题的其他人参考。 @siloob 感谢您的输入,您的更正是正确的,但在此之后我仍然有回溯,所以我还需要进行一些更改。
我需要传输我的 bmp 文件而不是我的 .py 文件,所以我添加了一个 if 语句,继续跳过任何带有 .py 的文件。这解决了我的问题,只传输了 bmp 文件。
import time
import os
import shutil
from datetime import datetime
today = datetime.now()
src = "."
dst = ('C:\Python\Image Compressor\File Saving\Archive\BDB040803_St14_' +
today.strftime('%d_%m_%Y'))
files = os.listdir(src)
for file in files:
if file.endswith(".py"):
continue
else:
shutil.move(os.path.join(src,file), os.path.join(dst,file))
如果您对替代方法感兴趣(您的方法不错,这并不意味着批评)。
您可以使用 pathlib
:
from pathlib import Path
from datetime import date
src = Path()
dst = Path(
r"C:\Python\Image Compressor\FileSaving\Archive\BDB040803_St14_"
+ date.today().strftime("%d_%m_%Y")
)
for file in src.glob("*.bmp"):
file.replace(dst / file.name)
.glob
allows you to fetch path/file-names that match patterns. The pattern structures aren't as powerful as regex, but can still be pretty helpful. You could also use the glob
直接模块。
.replace
接替了shutil.move
的工作。
我正在尝试将一个文件夹中的文件移动到另一个文件夹,同时只移动扩展名为 .bmp
.
我正在使用 shutil.move()
方法,当我没有指定文件类型时它可以工作,但是一旦我指定它就停止工作。我曾尝试调试它,但无法弄清楚为什么我的代码无法正常工作。我没有得到任何回溯,没有任何反应。
import time
import os
import shutil
from datetime import datetime
today = datetime.now()
src = "."
dst = ('C:\Python\Image Compressor\File Saving\Archive\BDB040803_St14_' +
today.strftime('%d_%m_%Y'))
files = os.listdir(src)
for file in src:
if file.endswith(".bmp"):
shutil.move(os.path.join(src,file), os.path.join(dst,file))
将 src
替换为 files
行:
for file in src:
好的,我终于解决了我的问题。我将 post 我的代码放在这里,以供遇到此问题的其他人参考。 @siloob 感谢您的输入,您的更正是正确的,但在此之后我仍然有回溯,所以我还需要进行一些更改。
我需要传输我的 bmp 文件而不是我的 .py 文件,所以我添加了一个 if 语句,继续跳过任何带有 .py 的文件。这解决了我的问题,只传输了 bmp 文件。
import time
import os
import shutil
from datetime import datetime
today = datetime.now()
src = "."
dst = ('C:\Python\Image Compressor\File Saving\Archive\BDB040803_St14_' +
today.strftime('%d_%m_%Y'))
files = os.listdir(src)
for file in files:
if file.endswith(".py"):
continue
else:
shutil.move(os.path.join(src,file), os.path.join(dst,file))
如果您对替代方法感兴趣(您的方法不错,这并不意味着批评)。
您可以使用 pathlib
:
from pathlib import Path
from datetime import date
src = Path()
dst = Path(
r"C:\Python\Image Compressor\FileSaving\Archive\BDB040803_St14_"
+ date.today().strftime("%d_%m_%Y")
)
for file in src.glob("*.bmp"):
file.replace(dst / file.name)
.glob
allows you to fetch path/file-names that match patterns. The pattern structures aren't as powerful as regex, but can still be pretty helpful. You could also use the glob
直接模块。
.replace
接替了shutil.move
的工作。