python脚本的输出显示为-无限

python脚本的输出显示为-无限,python,Python,脚本1: #!/usr/bin/env python import subprocess subprocess.call(["ulimit", "-c"], shell=True) 输出-无限制 脚本2: #!/usr/bin/env python import subprocess subprocess.call(["ulimit", "-c"], shell=True) 输出-0 我知道这是一个基本问题,请接受我的提问并回答无限和0是不同的输出,具有不同的含义 unl

脚本1:

#!/usr/bin/env python
import subprocess

subprocess.call(["ulimit", "-c"], shell=True)    
输出-
无限制

脚本2:

#!/usr/bin/env python
import subprocess

subprocess.call(["ulimit", "-c"], shell=True)    
输出-
0


我知道这是一个基本问题,请接受我的提问并回答

无限和
0
是不同的输出,具有不同的含义

unlimited
是调用时
ulimit
的实际值,如果检查手册页,
0
是调用的结果,这意味着
ulimit
成功执行

In [1]: import subprocess

In [2]: subprocess.call(["ulimit", "-c"], shell=True)
unlimited
Out[2]: 0

如果指定一个变量,可以看到结果是
0
,但是unlimited由调用的进程输出到标准输出(而不是调用返回的

脚本是相同的。问题可能是当你打电话的时候

subprocess.call(["ulimit", "-c"], shell=True)
你得到2个输出。第一个是
unlimited
,第二个是
0

尝试将输出分配给变量:

output = subprocess.call(["ulimit", "-c"], shell=True)
使用要容易得多,并且它允许
resource.setrlimit
,这是您的子进程根本无法做到的,因为它的操作将是子进程的本地操作,并且不会影响Python父进程

>>> import resource
>>> resource.getrlimit(resource.RLIMIT_CORE)
(0L, -1L)

为什么在
shell=True
旁边有一个引号?为什么在末尾有一个额外的“?脚本1与脚本2完全相同。由于
True
之间的
),两者都不会输出任何内容。脚本之间的区别是什么-\不可能。您没有显示实际代码,偶尔出现的语法错误(现已修复)证明了这一点。除非您显示实际代码,否则我们无法回答您的问题。制作一个简短的工作示例并精确复制它。实际上,我想通过python脚本执行unix命令:(ulimit-c unlimited)。你能告诉我怎么做吗?@BaijnathJaiswal使用
子流程。检查输出([“ulimit”,“-c”],shell=True)
@Ashwini Chaudhary,如何将值设置为无限值..?另外,在向Popen提供列表时不要使用
shell=True
。如果
shell=True
给它一个要执行的字符串。+1表示资源模块,给我一个新的。@msw,谢谢,但我仍然没有得到关于如何将值设置为无限的答复。@BaijnathJaiswal这是因为你没有问这个问题。看到这一个是如何关闭的,可以问“我如何从Python脚本内部更改rlimit”,我会很高兴地回答。如果您显示您阅读了资源模块页面并显示您的努力,即使它不起作用,也会更好。我们很乐意在此提供帮助,但我们不会为您编写代码。@msw谢谢。如果您感觉不好,很抱歉,但我已经浏览了资源模块页面,但找不到答案:(