English 中文(简体)
粉碎:向护卫处申请直线。 档案中的排位参数
原标题:Python: Running command line application to the script. Sending parameters in files
  • 时间:2009-10-05 14:28:14
  •  标签:

I want to try to use a command line script with my python application. The task is the following, my database stores some initial data for the script and I need to execute a command line application in a following way:

$ application -parameter1 -file1

这里的<编码>file1是一份载有我初步数据的文件,<代码>参数1是一个无关的参数。

我目前看到的工作流程如下:

initial_data = get_initial_data_from_db()
file = open( temp.txt ,  w+ )
file.write(initial_data)
file.save()
os.popen4("application -parameter1 -file temp.txt")

我想知道能否在不向硬盘提交初步数据的情况下执行这一文字(所谓的<代码>应用程序? 例如,是否有办法直接向指挥部发送档案内容?

最佳回答

您可使用分处理模块

例如:

import subprocess
bufsize =1024
initial_data = get_initial_data_from_db()
p = subprocess.Popen("application -parameter1", shell=True, bufsize=bufsize,
          stdin=subprocess.PIPE,   close_fds=True)

p.stdin.write(initial_data)
print p.communicate()

! 如果您的申请能从小到小到小到小到小到小步读,那么你的申请就能够从中读到。

在Oleg Tarasenko的口号之后,用“A”和“Eclipse”测试:

import subprocess

initial_data = """
import sys
print sys.path
"""

for test in [1,2,3] :
    p = subprocess.Popen("C:/python26/python", shell=True, bufsize=512,
          stdin=subprocess.PIPE,  stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)

    p.stdin.write(initial_data)
    print p.communicate()

产出:

("[  ,  C:\\dev\\ide\\eclipse\\plugins\\org.python.pydev_1.5.0.1251989166\\PySrc\\pydev_sitecustomize ,  C:\\dev\\ws\\central\\head\\script_jy\\src ,  C:\\dev\\ws\\central\\head\\script_jy\\libs ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jacob.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jiffie.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jaxen-1.1.1.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\swt.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\mysql-connector-java-3.0.17-ga-bin.jar ,  C:\\dev\\ws\\central\\head\\nlibs\\qpslib.jar ,  C:\\dev\\ws\\central\\head\\nlibs\\ifxjdbc.jar ,  C:\\server\\jboss\\client\\jbossall-client.jar ,  C:\\usr\\local\\machine ,  C:\\dev\\ws\\central\\head\\event\\src\\build\\components\\jobcontrol\\config ,  C:\\dev\\ws\\central\\head\\event\\src\\build\\components\\jobcontrol ,  C:\\dev\\ws\\central\\head\\event\\src ,  C:\\dev\\ws\\central\\head\\oknos\\tickcardimp\\bin ,  C:\\dev\\ws\\central\\head\\common\\jar\\shared.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\src ,  C:\\dev\\ws\\central\\head\\script_jy\\libs ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jacob.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jiffie.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jaxen-1.1.1.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\swt.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\mysql-connector-java-3.0.17-ga-bin.jar ,  C:\\dev\\ws\\central\\head\\nlibs\\qpslib.jar ,  C:\\dev\\ws\\central\\head\\nlibs\\ifxjdbc.jar ,  C:\\server\\jboss\\client\\jbossall-client.jar ,  C:\\usr\\local\\machine ,  C:\\dev\\ws\\central\\head\\event\\src\\build\\components\\jobcontrol\\config ,  C:\\dev\\ws\\central\\head\\event\\src\\build\\components\\jobcontrol ,  C:\\dev\\ws\\central\\head\\event\\src ,  C:\\dev\\ws\\central\\head\\oknos\\tickcardimp\\bin ,  C:\\dev\\ws\\central\\head\\common\\jar\\shared.jar ,  C:\\jython\\jython2.5.0\\Lib ,  C:\\jython\\jython2.5.0\\Lib\\site-packages ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\rt.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\jsse.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\jce.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\charsets.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\ext\\dnsns.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\ext\\localedata.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\ext\\sunjce_provider.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\ext\\sunpkcs11.jar ,  C:\\WINDOWS\\system32\\python26.zip ,  C:\\python26\\DLLs ,  C:\\python26\\lib ,  C:\\python26\\lib\\plat-win ,  C:\\python26\\lib\\lib-tk ,  C:\\python26 ]
", " import site  failed; use -v for traceback
")
("[  ,  C:\\dev\\ide\\eclipse\\plugins\\org.python.pydev_1.5.0.1251989166\\PySrc\\pydev_sitecustomize ,  C:\\dev\\ws\\central\\head\\script_jy\\src ,  C:\\dev\\ws\\central\\head\\script_jy\\libs ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jacob.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jiffie.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jaxen-1.1.1.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\swt.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\mysql-connector-java-3.0.17-ga-bin.jar ,  C:\\dev\\ws\\central\\head\\nlibs\\qpslib.jar ,  C:\\dev\\ws\\central\\head\\nlibs\\ifxjdbc.jar ,  C:\\server\\jboss\\client\\jbossall-client.jar ,  C:\\usr\\local\\machine ,  C:\\dev\\ws\\central\\head\\event\\src\\build\\components\\jobcontrol\\config ,  C:\\dev\\ws\\central\\head\\event\\src\\build\\components\\jobcontrol ,  C:\\dev\\ws\\central\\head\\event\\src ,  C:\\dev\\ws\\central\\head\\oknos\\tickcardimp\\bin ,  C:\\dev\\ws\\central\\head\\common\\jar\\shared.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\src ,  C:\\dev\\ws\\central\\head\\script_jy\\libs ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jacob.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jiffie.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jaxen-1.1.1.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\swt.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\mysql-connector-java-3.0.17-ga-bin.jar ,  C:\\dev\\ws\\central\\head\\nlibs\\qpslib.jar ,  C:\\dev\\ws\\central\\head\\nlibs\\ifxjdbc.jar ,  C:\\server\\jboss\\client\\jbossall-client.jar ,  C:\\usr\\local\\machine ,  C:\\dev\\ws\\central\\head\\event\\src\\build\\components\\jobcontrol\\config ,  C:\\dev\\ws\\central\\head\\event\\src\\build\\components\\jobcontrol ,  C:\\dev\\ws\\central\\head\\event\\src ,  C:\\dev\\ws\\central\\head\\oknos\\tickcardimp\\bin ,  C:\\dev\\ws\\central\\head\\common\\jar\\shared.jar ,  C:\\jython\\jython2.5.0\\Lib ,  C:\\jython\\jython2.5.0\\Lib\\site-packages ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\rt.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\jsse.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\jce.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\charsets.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\ext\\dnsns.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\ext\\localedata.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\ext\\sunjce_provider.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\ext\\sunpkcs11.jar ,  C:\\WINDOWS\\system32\\python26.zip ,  C:\\python26\\DLLs ,  C:\\python26\\lib ,  C:\\python26\\lib\\plat-win ,  C:\\python26\\lib\\lib-tk ,  C:\\python26 ]
", " import site  failed; use -v for traceback
")
("[  ,  C:\\dev\\ide\\eclipse\\plugins\\org.python.pydev_1.5.0.1251989166\\PySrc\\pydev_sitecustomize ,  C:\\dev\\ws\\central\\head\\script_jy\\src ,  C:\\dev\\ws\\central\\head\\script_jy\\libs ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jacob.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jiffie.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jaxen-1.1.1.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\swt.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\mysql-connector-java-3.0.17-ga-bin.jar ,  C:\\dev\\ws\\central\\head\\nlibs\\qpslib.jar ,  C:\\dev\\ws\\central\\head\\nlibs\\ifxjdbc.jar ,  C:\\server\\jboss\\client\\jbossall-client.jar ,  C:\\usr\\local\\machine ,  C:\\dev\\ws\\central\\head\\event\\src\\build\\components\\jobcontrol\\config ,  C:\\dev\\ws\\central\\head\\event\\src\\build\\components\\jobcontrol ,  C:\\dev\\ws\\central\\head\\event\\src ,  C:\\dev\\ws\\central\\head\\oknos\\tickcardimp\\bin ,  C:\\dev\\ws\\central\\head\\common\\jar\\shared.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\src ,  C:\\dev\\ws\\central\\head\\script_jy\\libs ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jacob.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jiffie.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\jaxen-1.1.1.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\swt.jar ,  C:\\dev\\ws\\central\\head\\script_jy\\jars\\mysql-connector-java-3.0.17-ga-bin.jar ,  C:\\dev\\ws\\central\\head\\nlibs\\qpslib.jar ,  C:\\dev\\ws\\central\\head\\nlibs\\ifxjdbc.jar ,  C:\\server\\jboss\\client\\jbossall-client.jar ,  C:\\usr\\local\\machine ,  C:\\dev\\ws\\central\\head\\event\\src\\build\\components\\jobcontrol\\config ,  C:\\dev\\ws\\central\\head\\event\\src\\build\\components\\jobcontrol ,  C:\\dev\\ws\\central\\head\\event\\src ,  C:\\dev\\ws\\central\\head\\oknos\\tickcardimp\\bin ,  C:\\dev\\ws\\central\\head\\common\\jar\\shared.jar ,  C:\\jython\\jython2.5.0\\Lib ,  C:\\jython\\jython2.5.0\\Lib\\site-packages ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\rt.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\jsse.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\jce.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\charsets.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\ext\\dnsns.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\ext\\localedata.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\ext\\sunjce_provider.jar ,  C:\\dev\\java\\jdk1.5.0_17\\jre\\lib\\ext\\sunpkcs11.jar ,  C:\\WINDOWS\\system32\\python26.zip ,  C:\\python26\\DLLs ,  C:\\python26\\lib ,  C:\\python26\\lib\\plat-win ,  C:\\python26\\lib\\lib-tk ,  C:\\python26 ]
", " import site  failed; use -v for traceback
")
问题回答

这完全取决于你重新呼吁的指挥线方案的特点。 如果要求你把档案列为一个参数,你就不得不这样做。 但是,如果你给它一个“-”的档案名称的话,可以从小部分读到。 一些方案以这种方式开展工作。 你们需要阅读关于该方案的文件,以了解你可以选择哪些方案。

布赖恩·奥克兰是正确的,其中很多取决于所呼吁的申请的能力。 但是,如果它能够直接 st,可能会有另一种方式。 如果你重新使用一种不像像样的系统,你可以将临时档案替换为,改名为.Wikipedia

如果你处于次要地位,你可以尝试将文件/dev/stdin作为与使用“-”相同的文件,但支持不了解“-”的方案。





相关问题
热门标签