スクリプトの内部から、スクリプトを起動するために使用した正確なコマンドを確認したいと思います。私は次のことを試しました:
#!/usr/bin/env python
import sys, os
print os.path.basename(sys.argv[0]), sys.argv[1:]
しかし、それは情報を失います:
$ 1.py -1 dfd 'gf g' "df df"
1.py ['-1', 'dfd', 'gf g', 'df df']
コマンドで、二重引用符、一重引用符を使用したか、引用符がまったくないかについての情報がすでに失われています。
編集:
これが私が使っているものです。私のスクリプトのすべての引数にはデフォルト値があり、引数が次のように解析された後argparse
:
args = parser.parse_args()
私はそれらをログに記録するか、ログがある場合は-それらを上書きします:
logName = "." + (os.path.splitext(os.path.basename(sys.argv[0])))[0] + ".json"
if os.path.exists(logName):
print "!!! I've found log", logName
Args = bk_loads_json(logName)
for arg in Args:
exec('args.{0} = Args["{0}"]'.format(arg))
else:
print "!!! the log of args is saved to", logName
bk_saves_json(args.__dict__, logName)
言及されたdefuns:
def bk_saves_json(myCustomDct, flNm):
"Takes dict, and writes it to the file."
FlNm = open(flNm, 'w')
tmpJsn = json.dumps(myCustomDct, sort_keys=True, indent=4)
FlNm.write(tmpJsn)
FlNm.close()
def bk_loads_json(flNm):
"Takes file of the json and returns it as a dict."
json_data=open(flNm)
data = json.load(json_data)
json_data.close()
return data