【问题标题】:How to Delete Python Files which have Similar Name?如何删除具有相似名称的 Python 文件?
【发布时间】:2019-11-25 14:41:27
【问题描述】:

您好,我有不同的 CSV 文件,但其中一些在中间有相似的名称。 文件名: 1. ab.New_Groups.3123.csv 2. bca.New_Groups.2134.csv 3. asdad.DDog.213.csv 4. asda.Cat.12312.csv

这是我目前所拥有的:

import glob
import zipfile
import os
#will unzip the file into a folder
with zipfile.ZipFile("October.zip", 'r') as zip_ref:
     zip_ref.extractall(("/path/Reports"))
#deleting files which are not useful
extension = ".csv"

#going to the directory where the files at
os.chdir("path/Reports")
all_filenames = [f for f  in glob.glob('[New_Groups]*{}'.format(extension))]

#for d in all_filenames:
os.remove(d)
print all_filenames

它不会删除任何内容,我的目标是删除名称中包含“New_Groups”的所有文件。

提前谢谢你!

【问题讨论】:

  • os.remove(d) 应该删除文件d,但在all_filenames 中,您拥有在文件存在时检索到的文件的原始列表。如果该文件确实仍然存在,请检查 windows 文件夹浏览器。
  • 用python删除文件?为什么不简单地ls | grep New_Groups | xargs rm
  • 在我的脚本中,我将它作为#comment 它不是它的实际部分。 @Aryerez
  • @meissner_ 它是一个大脚本的一部分,我正在尝试将所有内容保存在 python 中,可能会调用一个 bash 脚本,这是一个好主意,谢谢!!1

标签: python csv data-analysis


【解决方案1】:

您在文件名的开头缺少一个 * 通配符:

In [13]: [f for f  in glob.glob('[New_Groups]*{}'.format(extension))]
Out[13]: []

In [14]: [f for f  in glob.glob('*New_Groups*{}'.format(extension))]
Out[14]:
['2.ab.New_Groups.3123.csv',
 '1.ab.New_Groups.3123.csv',
 'ab.New_Groups.3123.csv']

【讨论】:

  • 你好,我试过了,它会返回所有文件
  • 糟糕!我粘贴在错误的行中。现在应该修好了。以上将仅返回与 ^.*New_Groups.*csv$ 等模式匹配的文件。 [] 的作用类似于正则表达式中的字符范围。
【解决方案2】:

感谢@meissner_

解决方案是: #转到文件所在的目录 os.chdir("路径/报告")

#this will delete all the files which contains New_Groups
os.system("ls | grep New_Groups | xargs rm")

【讨论】:

  • 这还将删除名为 abdc.New_Groups.txt 的文件以及名为 New_groups.py 的文件或其他任何文件。为确保您只删除扩展名为 .csv 的文件,您应该修改您的 glob.glob() 声明,如上所述。您当前的语句还将打印带有 [] 中包含的字符的任何内容,并且不一定按该顺序。例如,它将查找标题为N.csv 以及soup.csv 等的文件。
  • 我解压缩了一个文件,所以我只包含 csv 文件,但我理解你的意思!我尝试了您的新版本和 [] 这似乎是问题所在。 @currand60
猜你喜欢
  • 2019-12-22
  • 1970-01-01
  • 2013-07-25
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多