Joe*_*oeB 8 python security bash scripting embedding
我想知道使用os.system()在Python脚本中调用bash命令是否是一种好的风格.我也想知道这样做是否安全.
我知道如何在Bash和Python中实现我需要的一些功能,但在Bash中实现它更简单,更直观.但是,我觉得编写os.system("bash代码")非常hackish.
具体来说,我想将所有以特定扩展名结尾的文件移动到目录中.
在bash中:*mv .ext/path/to/destination 在Python(伪代码)中:对于目录中的文件:if file.endswith("ext"):将文件移动到目标
在这种情况下,我该怎么办?
Jam*_*ead 17
首先,您的示例使用mv,这是coreutils中的程序,而不是bash.
使用os.system()调用外部程序被认为是糟糕的风格,因为:
正如其他人已经提到的那样,查找glob,用于类似shell的模式匹配(globbing)和shutil.否则,您需要的所有内容都已存在于标准库中.
import glob
import shutil
for extfile in glob.glob('*.ext'):
shutil.move(extfile,dest)
Run Code Online (Sandbox Code Playgroud)
此外,不应使用os.system() - 请查看子进程模块.