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

时间:2015-08-19 18:47:22

标签: python bash unix system

要连接文件夹的所有TXT文件,可以使用cat轻松完成:

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

但是,我希望连接所有文件,除了可以使用以下命令完成的文件,如同W32APIOptions.DEFAULT_OPTIONS所解释的那样:

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

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

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

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

1 个答案:

答案 0 :(得分:3)

您需要在调用之前在bash中启用扩展模式匹配:

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