如何将文件作为命令行参数传递
a=np.loadtxt("graph3.txt",dtype='float')
现在我想将上面的文件graph3.txt作为命令行参数传递为python x.py graph3.txt并执行上面的操作a = np.loadtxt(" graph3.txt",dtype ='浮动')在comman line参数
答案 0 :(得分:2)
您可以使用像argparse或docopt这样的库,但对于简单的任务,请查看sys.argv:
import sys
if len(sys.argv) != 2:
print("Please inform the filename")
exit(1)
fname = sys.argv[1]
try:
a = np.loadtxt(fname, dtype='float')
except IOError:
print("File '%s' doesn't exist", fname)
exit(1)
# Program continues
答案 1 :(得分:1)
您可以使用argv
模块中的sys
:
from sys import argv
print argv
您将获得list
中的所有命令行参数,其中列表中的0
位置将是脚本本身的名称
[~]$ python script.py arg1 arg2 arg3 arg4
['script.py', 'arg1', 'arg2', 'arg3', 'arg4']
答案 2 :(得分:1)
如果您需要支持大量参数并为其提供帮助,我认为optparse和argparse可以做得很好。
optparse
有一个例子:
from optparse import OptionParser
parser = OptionParser(version="%prog 1.0.0")
parser.add_option("-f", "--file", action="store", dest="file",
default="graph3.txt", type="string",
help="specify a file to load")
options, args = parser.parse_args()
a=np.loadtxt(options.file,dtype="float")
然后,您可以使用以下脚本:./script.py -f gragh3.txt
或./script.py --file=gragh3.txt
。
您可以使用./script.py -h
使脚本打印使用文档。
答案 3 :(得分:0)
Python命令行参数存储在sys
modules'列表变量argv
中。所以你要找的代码是:
import sys
a = np.loadtxt(sys.argv[1], dtype='float')
假设您将文件名作为第一个参数传递给脚本,如问题中所述。