我正在使用Ubuntu,并且一直在尝试做一个简单的自动化,它要求我在命令行列表中输入[name of website]和[file path]。我正在使用子进程和调用函数。我尝试了一些更简单的方法,首先使用“ls”命令。你知道吗
from subprocess import call
text = raw_input("> ")
("ls", "%s") % (text)
它们返回为“buffsize必须是整数”。我试着找出那是什么,显然我必须把命令作为一个列表传递出去。所以我试着在我试图编码的主要事情上做它。你知道吗
from subprocess import call
file_path = raw_input("> ")
site_name = raw_input("> ")
call("thug", -FZM -W "%s" -n "%s") % (site_name, file_path)
这些在第一个“%s”上作为无效语法传递。有人能给我指出正确的方向吗?你知道吗
下面是一个完整的示例,说明如何使用
subprocess.call
调用可执行python文件,使用argparse
正确解析输入。你知道吗要调用的python文件(沙盒argparse.py):
调用python文件:
不能对元组使用
%
。你知道吗你可能是说
但是
"%s" % string
显然只返回string
,所以这里不需要使用格式。你知道吗这仍然没有任何用处;您是否忘记了
call
?你知道吗在
call
的参数中也不能有无引号的字符串。你知道吗需要有
-FZM
和-W
的引号,而且,如果使用格式字符串,格式需要发生在格式字符串附近。你知道吗还要注意
call()
的第一个参数是一个正确的列表,还是一个长字符串(在这种情况下,您需要shell=True
,您希望avoid if you can)。你知道吗如果您正在编写新的脚本,那么您肯定应该认真地考虑针对python3的问题(在这种情况下,您希望转向
subprocess.run()
和input()
,而不是raw_input()
)。Python2已经过了它最初宣布的终止日期,尽管它被推迟了几年,因为Py3k的采用在几年前仍然很慢。它不再是,也不应该是你想在Py3,那是未来的所在。你知道吗相关问题 更多 >
编程相关推荐