如何静默或重定向 shutil.move() 的输出或其他在静默模式下移动文件的方法?
How to silent or redirect output of shutil.move() or another method to move files in silent mode?
正在使用 Python shutil.move() 方法,但需要将数百万个文件从一个位置移动到另一个位置,我想重定向/静默 shutil.move() 的输出。
if os.path.exists(logs_path_archive):
for source_file in downloaded_files:
destination_file = source_file.replace(logs_path,logs_path_archive)
shutil.move(source_file,destination_file)
有什么推荐吗?
在您指定的评论中,您使用的是 Jupyter Notebooks。因此,您可以为此使用 IPython/Jupyter 内置的几个选项。
如果移动步骤只有一个单元格,则在单元格的开头放置以下内容:
%%capture out_stream
shutil.move(<original_filename>,<new_file_name>)
但是,这听起来像是移动步骤在一个单元格中的许多其他步骤中,因此为了让移动安静下来,您可以使用 with io.capture_output() as captured:
仅抑制来自 with
块,像这样:
from IPython.utils import io
with io.capture_output() as captured:
shutil.move(<original_filename>,<new_file_name>)
有关这两者的更多信息,请参阅页面 here。 %%capture
细胞魔法可能会高于 link 发送给你的地方。
如果您确实需要使用纯 python,您可以使用 with
语句和 contextlib(类似于处理输出的上下文管理器)来重定向它,类似于 with io.capture_output() as captured
上面的想法。在这里,我将它发送到 _
,当您不打算稍后使用分配的对象时经常使用它。
import contextlib
with contextlib.redirect_stdout(_):
shutil.move(<original_filename>,<new_file_name>)
正在使用 Python shutil.move() 方法,但需要将数百万个文件从一个位置移动到另一个位置,我想重定向/静默 shutil.move() 的输出。
if os.path.exists(logs_path_archive):
for source_file in downloaded_files:
destination_file = source_file.replace(logs_path,logs_path_archive)
shutil.move(source_file,destination_file)
有什么推荐吗?
在您指定的评论中,您使用的是 Jupyter Notebooks。因此,您可以为此使用 IPython/Jupyter 内置的几个选项。
如果移动步骤只有一个单元格,则在单元格的开头放置以下内容:
%%capture out_stream
shutil.move(<original_filename>,<new_file_name>)
但是,这听起来像是移动步骤在一个单元格中的许多其他步骤中,因此为了让移动安静下来,您可以使用 with io.capture_output() as captured:
仅抑制来自 with
块,像这样:
from IPython.utils import io
with io.capture_output() as captured:
shutil.move(<original_filename>,<new_file_name>)
有关这两者的更多信息,请参阅页面 here。 %%capture
细胞魔法可能会高于 link 发送给你的地方。
如果您确实需要使用纯 python,您可以使用 with
语句和 contextlib(类似于处理输出的上下文管理器)来重定向它,类似于 with io.capture_output() as captured
上面的想法。在这里,我将它发送到 _
,当您不打算稍后使用分配的对象时经常使用它。
import contextlib
with contextlib.redirect_stdout(_):
shutil.move(<original_filename>,<new_file_name>)