web*_*org 13 python file delete-file
我想确保删除所需的文件.我有类似的代码
dir="/some/path/"
file = "somefile.txt"
cmd_rm= "rm -rf "+dir + file
os.system(cmd_rm)
Run Code Online (Sandbox Code Playgroud)
该dir和file值是从数据库中提取.我怎样才能确保我永远不会跑步rm -rf /?
在做之前我应该检查什么rm -rf?
sth*_*sth 27
-r如果您只想删除单个文件,请不要使用该开关.此外,文件名中可能有空格.
更好地使用Python os模块中的函数:
dirname = "/some/path/"
filename = "somefile.txt"
pathname = os.path.abspath(os.path.join(dirname, filename))
if pathname.startswith(dirname):
os.remove(pathname)
Run Code Online (Sandbox Code Playgroud)
规范化路径abspath并将其与目标目录进行比较可避免使用"../../../etc/passwd"等文件名.
首先,我建议你使用os.remove()和os.rmdir()函数来处理这样的事情.最终会得到更多的可移植代码,并且不再需要检查命令返回.
要检查有效尝试删除的内容(您可能不想只检查"/"),可以在生成的路径上使用一些正则表达式,或者只添加从数据库返回的所有路径的基本路径(取决于您是什么)做...).
| 归档时间: |
|
| 查看次数: |
24578 次 |
| 最近记录: |