python - 使用占位符删除文件

标签 python python-3.x

我想使用 python 从目录中删除多个文件。 shell 命令看起来像

rm *_some.tex

当我在 python 中使用类似这样的东西时,没有任何内容被删除:

intermediates = ('*_some.text', '*_other.text')
for intermediate in intermediates:
    if os.path.isfile(intermediate):
        os.remove(intermediate)

如何在 python 中实现 shell 行为?

最佳答案

您需要使用 globfnmatch 来正确地对 glob 进行 shell 扩展。另外 if os.path.isfile: os.remove 会导致一些竞争条件。这更好:

import glob

globtexts = ('*_some.text', '*_other.text')
files = [glob.glob(globtext) for globtext in globtexts]
# try saying that line out loud five times fast....
for file in files:
    try:
        os.remove(file)
    except Exception as e:
        print("There was a problem removing {}: {!r}".format(file, e))

关于python - 使用占位符删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28354156/

相关文章:

python - 在Python脚本中使用配置解析器读取和写入属性

python - 重命名 true false boolean 值

python - 如何在 EC2 linux 环境中降级我的 BeautifulSoup 版本?

python - Django 最喜欢/比较的功能

python - threading.Condition.wait(timeout) 忽略 threading.Condition.notify()

python-3.x - Python - 在可编辑的 Gtk.TreeView 单元格中自动完成

python - 将数据帧向量添加到数据帧表

python - Django:查询集对象过滤器,针对另一个对象的时间范围

python-3.x - 如何查找tensorflow.python.data.ops.dataset_ops.MapDataset对象的大小或形状,make_csv_dataset的输出

python - 是否有方法/属性/var 可以获取 python3 unittest 中跳过的测试列表?