我是Python的初学者,有shell脚本背景。我已经学习了shutil和subprocess模块来创建文件/目录。
我的问题是,哪个更好,哪个建议用于管理我的操作系统(Linux/Windows)中的文件?我读过一些Python书籍,它们不鼓励为这些目的使用OS命令。
我对Linux很满意,主要是在Linux环境中工作,我非常倾向于使用rm、mkdir、cp命令来管理文件。使用一个比另一个有什么问题/好处吗?
发布于 2017-12-29 12:12:18
我将在回家后尝试对此加以补充,但首先,我将告诉我昨天编写的示例代码。
不过你可以自己试试。
发布于 2017-12-29 12:40:00
两者都有不同的目的。
(Python 2)模块对文件和文件集合提供了许多高级操作.特别是提供了支持文件复制和删除的功能。有关单个文件的操作,请参见os模块。
(Python 2)模块允许您生成新进程,连接到它们的输入/输出/错误管道,并获得它们的返回代码。该模块打算取代几个较旧的模块和功能:
如果您是初学者,并且在Linux环境中工作过,subprocess可能是您理想的模块。
基本上,您可以在subprocess函数的帮助下执行所有的Linux命令。
subprocess.call
subprocess.check_call
subprocess.check_output对于更多的控制,您可以使用subprocess.Popen。
让我们举一个要执行命令"ls -l"的例子
from subprocess import Popen
import shlex
command="ls -l"
args = shlex.split(command) #it will break the command in list acceptable by Popen
p1=Popen(args)通过这种方式,您可以运行任何复杂的命令。
根据我在这方面的经验,我将推荐subprocess,它很简单,可以执行各种任务,可以运行Linux命令(基本上是任何有效的命令,取决于操作系统),在Windows上也很有帮助。
发布于 2021-11-19 09:32:08
shutil的一个非常重要的方面是它在复制/存档操作中的cross-platformness。例如,只要让它复制一个文件,您就不关心它是运行在Linux上,还是运行在Windows或MacOS上。您只需询问shutil您想要什么,shutil将负责将您的请求转到基于主机操作系统的适当命令。
此外,作为一般规则,每次为一组更特定的任务创建库时,您都可以期望在这些任务中从库中获得更好的性能。shutil的docstring给出了这样的总结:“用于复制和归档文件和目录树的实用程序函数”,因此它非常具体。值得注意的一点是,每次运行带有子进程的东西时,它都会创建一个新的进程,因此如果您经常执行它,它可能会成为一个显著的减速,然而,shutil可以“直接”完成它的特定任务,并without创建新进程的开销。
https://stackoverflow.com/questions/43905907
复制相似问题