我从bash开始,正在执行脚本:
$ ./readtext.sh ./InputFiles/applications.txt
这是我的readtext.sh代码:
#!/bin/bash
filename="$1"
counter=1
while IFS=: true; do
line=''
read -r line
if [ -z "$line" ]; then
break
fi
echo "$line"
python3 ./download.py \
-c ./credentials.json \
--blobs \
"$line"
done < "$filename"
我想在python文件中打印字符串(“ ./InputFiles/applications.txt”),我使用了sys.argv[1]
,但是这一行给了我-c。我怎样才能得到这个字符串?谢谢
答案 0 :(得分:3)
您更容易将参数“ $ 1”传递给internal
命令python3
。
如果您不想这样做,您仍然可以使用external
的 trick 来获取/proc
命令行参数,例如:
$ cat parent.sh
#!/usr/bin/bash
python3 child.py
$ cat child.py
import os
ext = os.popen("cat /proc/" + str(os.getppid()) + "/cmdline").read()
print(ext.split('\0')[2:-1])
$ ./parent.sh aaaa bbbb
['aaaa', 'bbbb']
注意:
parent.sh
中的shebang行很重要,或者您应使用./parent.sh
执行bash
,否则在ps
或{{1}中将没有命令行参数}。/proc/$PPID/cmdline
:[2:-1]
的原因,ext.split('\0') = ['bash', './parent.sh', 'aaaa', 'bbbb', '']
的实参始于2,终止于-1。 更新:由于@cdarke的命令“ ./parent.sh
不可移植”,因此我不确定通过这种方式使命令行更可移植:
/proc
仍然具有相同的输出。
答案 1 :(得分:-1)
这是您可以使用的python文件
inspect.getmodule(meth)