可以说我在一个文件夹中有 1000 个具有随机名称的 csv 文件test
。我有一个 python 脚本script.py
。我想写一个 bash 脚本来传递文件夹中每个文件的名称script.py
然后运行它,因此 bash 脚本应该运行script.py
1000 次,每次都使用不同的文件名,例如,第一次运行:
with open('records.csv','r') as in_file
下次运行
with open('vertigo.csv','r') as in_file
我知道我可以在 python 中完成它而无需像这样编写 bash 脚本
import glob
for filename in glob.glob('*.csv'):
# script here
但我正在做一些测试,因此我想在 bash 中进行
使用
sys.argv[1]
以便从参数中获取文件名:然后,您可以使用各种方法将文件名作为参数传递。例如,与
find
:使用的替代方法
sys.argv
是使用argparse
. 如果您需要更多的命令行参数解析,这非常有帮助。通过 Bash 扩展我们的文件参数列表来运行它:
并“免费”提供内置帮助:
你必须在 python 脚本中检索文件名才能工作:
在一行中:
扩展 muru 的回答:
为什么不在你的 python 脚本中完成这一切?将脚本对文件的操作转换为函数,然后以目录 作为参数运行脚本:
或者更短一点:
或者,如果该目录还可能包含其他文件:
然后只需将目录作为参数运行它:
使用
sys.argv
as 列表,提供所有单独的文件作为参数,并让您的 shell(例如 Bash)为您展开它。script.py
好像:像这样的文件树:
然后使其可执行:
使用 shell 扩展的参数运行它:
输出: