连接除一个调用系统之外的所有文件 - Python

Concatenate all files except one calling system - Python

要拼接一个文件夹的所有TXT文件,可以用cat轻松完成:

cat ./tmp*.txt >./tmp/all.txt

但是,我想连接所有文件,但可以使用以下命令完成的文件除外 here:

cat ./tmp/!(1.txt) >./tmp/all_except_1.txt

这些命令在命令行上运行完美,但我试图从 python 使用 os.system 命令调用它们并给出错误

>>> import os
>>> os.system('cat ./tmp/!(1.txt) >./tmp/all_except_1.txt')
sh: 1: Syntax error: "(" unexpected

有人知道为什么以及如何解决吗?

您需要在 bash 中启用扩展模式匹配才能调用它:

os.system("bash -O extglob -c 'cat ./tmp/!(1.txt) >./tmp/all_except_1.txt'")