在命令行中传递Python代码

时间:2017-05-03 19:58:51

标签: python command-line

是否有可能以某种方式转换我通过命令行传递的字符串,例如

python myfile.py "s = list(range(1000))"

进入模块?然后......

#myfile.py
def printlist(s):
   print(s)

类似于timeit模块,但有我自己的代码。

python -m timeit -s "s = list(range(1000))" "sorted(s)" 

3 个答案:

答案 0 :(得分:1)

保存代码

import sys
print(sys.argv)

filename.py,然后运行python filename.py Hi there!,看看会发生什么;)

答案 1 :(得分:1)

我不确定我是否理解正确,但sys模块的属性argv是命令行中传递的所有参数的列表。

test.py:

#!/usr/bin/env python
import sys

for argument in sys.argv:
    print(argument)

此示例将打印传递给脚本的每个参数,请记住第一个元素sys.argv[0]将始终是脚本的名称。

$ ./test.py hello there
./test.py
hello
there

答案 2 :(得分:0)

有两种发送短代码段的选项,类似于通过timeit模块或某些其他-m模块选项功能可以执行的操作,它们是:

您可以使用Python的-c选项,例如: python -c "<code here>"

或者您可以使用管道,例如: echo <code here> | python

您可以使用;分号语句分隔符组合多个语句。但是,如果您将:whilefordefif一起使用,则无法使用;,因此可能有限的选择。可能有一些巧妙的方法可以解决此限制,但是我还没有看到它们。