如何使用glob.glob(“”)按名称排除某些文件?

时间:2019-12-03 11:35:15

标签: python json list

我正在使用python glob.glob(“ *。json”)。该脚本返回json文件的文件,但是在执行一些操作后,它将创建一个新的json文件。如果我再次运行相同的脚本,它将在列表中添加此新文件...

glob.glob("*.json")

输出:

['men_pro_desc_zalora.json',
 'man_pro_desc_Zalando.json',
 'man_pro_desc_nordstrom.json']

代码结尾:

with open("merged_file.json", "w") as outfile:
      json.dump(result, outfile)

运行添加文件merged_file.json后 如果我再次运行glob.glob(“ *。json”),它将返回:

['men_pro_desc_zalora.json',
 'man_pro_desc_Zalando.json',
 'man_pro_desc_nordstrom.json',
merged_file.json]

2 个答案:

答案 0 :(得分:1)

通过执行类似glob.glob('*_*_*_*.json')的操作,可以减少某些注释提到的模式的排他性。更多详细信息,请参见https://docs.python.org/3.5/library/glob.html#glob.glob

这从来都不是干净的,并且由于glob不是常规的正则表达式,因此表达性不强。由于订购似乎并不重要,因此您可以执行

之类的操作
excludedFiles = ['merged_file.json']
includedFiles = glob.glob('*.json')

# other code here

print list(set(includedFiles) - set(excludedFile))

这回答了您的问题,但是我认为对您的问题的更好解决方案是将原始数据和生成的文件分离到不同的目录中。我认为在对数据进行即席工作时,通常这是一个好习惯。

答案 1 :(得分:0)

如果只想删除添加的最新文件,则可以尝试以下代码。

import os
import glob
jsonFiles = []
jsonPattern = os.path.join('*.json')

fileList = glob.glob(jsonPattern)

for file in fileList:
  jsonFiles.append(file)
print jsonFiles

latestFile = max(jsonFiles, key=os.path.getctime)
print latestFile

jsonFiles.remove(latestFile)
print jsonFiles

输出:

['man_pro_desc_nordstrom.json', 'man_pro_desc_Zalando.json', 'men_pro_desc_zalora.json', 'merged_file.json']
merged_file.json
['man_pro_desc_nordstrom.json', 'man_pro_desc_Zalando.json', 'men_pro_desc_zalora.json']