如何在将内容添加回文件之前使用通配符删除一些文件?

How to remove some number of files using a wild card before adding stuff back to them?

我有一组 .txt 个名为 my_file_1.txt, my_file_2.txt, ..., my_file_n.txt 的文件,其中 n 是有限整数。由于我的 python 代码是 运行(在路径为 ~/simulation/some_code 的目录中),它使用以下 for loop:

将数据添加到这些文件中
for realization in np.arange(1, n+1):
    # Identifying the file_path
    some_name = 'output/{}/Info/{}/{}/parameter_{:.3f}/my_file_{}.txt'.format(size, name, status, value, realization)

    # do some stuff

    with open(some_name, "a") as filename:
    print('{}'.format(some_list), file=filename)
    filename.close()

但是,首先,这些文件不是空的,需要清空。为此,我提前 运行 以下行(在主目录 ~/ 中,相对于上述代码的目录向上两层)以确保文件在被删除之前为空修改:

os.system('> output/{}/Info/{}/{}/parameter_{:.3f}/my_file_*.txt'.format(size, name, status, value))

虽然我希望看到 * 符号应该充当通配符来清空上面所有类似的文本文件,但文件似乎是从以前的数据中累积的,而不是删除初始数据并添加上面的内容。我是否错误地使用了 * 通配符?这个问题可以在不改变我的代码路径的情况下解决吗?

您对通配符的理解是正确的。错误在于重定向。默认情况下,您只重定向 (>) 到一个输出。您可以使用程序 tee 将标准输出重定向到多个其他文件,如下所示:

(echo -n, 什么都不回显)

echo -n | tee *

管道|将echo -n的stdout传递给tee的stdin。 然后通配符将扩展到目录中的所有文件。

echo -n | tee my_file_1.txt, my_file_2.txt, ..., my_file_n.txt