[英]Deleting files based on day within filename
I have a directory with files like: data_Mon_15-8-22.csv
, data_Tue_16-8-22.csv
, data_Mon_22-8-22.csv
etc and I am trying to delete all but the Monday files. 但是,我的脚本似乎没有区分文件名,尽管我声明了它,但它只是删除了所有内容。 我在哪里 go 错了? 任何帮助将非常感激!
我的代码:
def file_delete():
directory = pathlib.Path('/Path/To/Data')
for file in directory.glob('data_*.csv'):
if file != 'data_Mon_*.csv':
os.remove(file)]
如果所有星期一文件都以“data_Mon_”开头,那么您可以使用 str.startswith:
def file_delete():
directory = pathlib.Path('/Path/To/Data')
for file in directory.glob('data_*.csv'):
if not file.name.startswith('data_Mon_'):
os.remove(file)
if file != 'data_Mon_*.csv'
这里有两个问题:
file
与字符串'data_Mon_*.csv'
进行比较。 由于file
不是字符串,因此这两个对象永远不会相等。 所以if
条件永远为真。 要解决此问题,您需要获取文件名,而不是直接使用文件 object。
即使您解决了这个问题,字符串'data_Mon_*.csv'
也是文字。 换句话说, *
是一个*
。 与directory.glob('data_*.csv')
不同,这只会匹配*
而不是匹配 glob 表达式中的“任何内容”。 为了解决这个问题,您需要使用正则表达式来匹配您的文件名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.