gpt4 book ai didi

python - 将参数从 shell 脚本传递到 Python 脚本,而无需在命令行上指定参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:42:50 24 4
gpt4 key购买 nike

我想执行一个 shell 脚本,而不必在命令行本身上指定任何额外的参数。相反,我想对参数进行硬编码,例如在shell脚本中输入文件名和文件路径。

玩具 shell 脚本:

#!/bin/bash

time python3 path/to/pyscript/graph.py \
--input-file-path=path/to/file/myfile.tsv

因此,当我运行 $ ./script.sh 时,脚本应该将输入文件信息传递给 py 脚本。

这能做到吗?我总是收到错误“没有这样的目录或文件”......

请注意,我将使用 argparse 处理 python 脚本端的参数。

编辑

原来这个问题是由我在上面的玩具脚本中遗漏的东西引起的,因为我认为这不是原因。事实上,我注释掉了一行,正是这一行阻止了脚本运行。

玩具 shell 脚本完整版:

#!/bin/bash

time python3 path/to/pyscript/graph.py \
# this commented out line prevents the script from running
--input-file-path=path/to/file/myfile.tsv

最佳答案

我怀疑你的脚本是正确的,但文件路径是错误的。也许您忘记了前导正斜杠。无论如何,确保 path/to/pyscript/graph.pypath/to/file/myfile.tsv 是正确的。

如何从 BASH 脚本中使用硬编码参数调用 python 脚本的虚拟示例:

$ cat dummy_script.py 
import argparse
import os
import time

parser = argparse.ArgumentParser()
parser.add_argument("-i", "--input-file-path")
args = parser.parse_args()

if os.path.isfile(args.input_file_path):
print args.input_file_path, "is a file"
print "sleeping a second"
time.sleep(1)

$ cat time_python_script.sh
time python dummy_script.py --input-file-path=/etc/passwd

$ /bin/bash time_python_script.sh
/etc/passwd is a file
sleeping a second

real 0m1.047s
user 0m0.028s
sys 0m0.016s

关于python - 将参数从 shell 脚本传递到 Python 脚本,而无需在命令行上指定参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40835127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com