首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python删除无用的输出文件

使用Python删除无用的输出文件
EN

Stack Overflow用户
提问于 2022-06-14 04:50:49
回答 2查看 39关注 0票数 -1

在从特定目录执行python脚本后,我会得到许多输出文件,但除了5-6个文件外,我还想从该目录中删除其余的文件。我所做的就是,我已经把那些5-6有用的文件放在一个列表中,并删除了列表中没有的所有其他文件。下面是我的代码:

代码语言:javascript
运行
复制
list1=['prog_1.py', 'prog_2.py', 'prog_3.py'] #Extend
import os
 
dir = '/home/dev/codes' #Change accordingly
for f in os.listdir(dir):
  if f not in list1:
    os.remove(os.path.join(dir, f))

现在我只想再添加一件事情,如果输出文件以output_of_final开头,那么我不希望它们被删除。我该怎么做呢?我应该使用regex吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-14 04:55:50

你可以用Regex,但这太过分了。只需使用str.startswith方法即可。

此外,使用保留关键字、内置类型和函数作为变量名也是错误的做法。我已将dir重命名为directory. (https://docs.python.org/3/library/functions.html#dir)

代码语言:javascript
运行
复制
list1 = ['prog_1.py', 'prog_2.py', 'prog_3.py'] # Extend
import os
 
directory = '/home/dev/codes' # Change accordingly
for f in os.listdir(directory):
  if f not in list1 and not f.startswith('output_of_final'):
    os.remove(os.path.join(directory, f))
票数 2
EN

Stack Overflow用户

发布于 2022-06-14 04:57:34

是的,regex在这里工作,但是有一些更简单的选项,比如对字符串使用startswith方法

代码语言:javascript
运行
复制
list1=['prog_1.py', 'prog_2.py', 'prog_3.py'] #Extend
import os
 
dir = '/home/dev/codes' #Change accordingly
for f in os.listdir(dir):
  if (f not in list1) and (not f.startswith('output_of_final')):
    os.remove(os.path.join(dir, f))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72611676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档