diff --git a/globa_test.py b/globa_test.py new file mode 100644 index 0000000..b96e81e --- /dev/null +++ b/globa_test.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 + +import glob +from pathlib import Path + +if __name__ == '__main__': + files = glob.glob("*su*.py") + print(files) + + for file in files: + print(f"- {file}") + + # iglob 返回的是一个生成器(Generator)。它采用“惰性求值”, + # 只有在你循环遍历它时,它才会去查找下一个文件,极大地节省了内存。 + print("-" * 100) + for file in glob.iglob("*su*.py", recursive=True): + print(f"- {file}") + + print("-" * 100) + base_dir = Path(".") + # 查找所有的 *su*.py 文件(pathlib 默认支持递归用 rglob) + for path in base_dir.rglob("*su*.py"): + print(f"- {path.name} --> {path.absolute()}") diff --git a/subprocess_test_2.py b/subprocess_test_2.py index dd0e0cd..4f75ff6 100755 --- a/subprocess_test_2.py +++ b/subprocess_test_2.py @@ -43,6 +43,10 @@ if __name__ == "__main__": - Shell 内置命令:有些命令(如 Windows 的 dir, copy 或 Linux 的 export)并不是独立的可执行文件, 而是 Shell 的内置命令。如果不设 shell=True,Python 会报错找不到文件。 - 通配符展开:比如 "rm *.txt" + + IMPORTANT: + 不得不用的情况:如果必须要用 shell=True(比如必须调用系统内置命令),且涉及用户输入, + 务必使用 shlex.quote()(Linux/macOS)对用户输入进行转义过滤。 """ subprocess.run( 'echo ">>>>>>>>>>>>" && env && echo "<<>>"',