是否有可能以某种方式转换我通过命令行传递的字符串,例如
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)"
答案 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
您可以使用;
分号语句分隔符组合多个语句。但是,如果您将:
与while
或for
或def
或if
一起使用,则无法使用;
,因此可能有限的选择。可能有一些巧妙的方法可以解决此限制,但是我还没有看到它们。