Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python2.7中使用Ruffus库时,just_print标志失败_Python_Python 2.7_Pipeline_Ruffus - Fatal编程技术网

在Python2.7中使用Ruffus库时,just_print标志失败

在Python2.7中使用Ruffus库时,just_print标志失败,python,python-2.7,pipeline,ruffus,Python,Python 2.7,Pipeline,Ruffus,在Python2.7中我有一个ruffus管道,但是当我用-n或-just_print调用它时,它仍然运行所有实际任务,而不是像预期的那样只打印管道。I: *不要使用-n参数替代内置参数(尽管我有其他命令行参数) *有一组带有@transform()或@merge()装饰器的函数 *使用run\u pipeline()调用结束管道 还有其他人遇到过这个问题吗?非常感谢 从ruffus 2.4版开始,您可以使用内置的,它通过使用argparse的cmdline.py模块存储适当的标志,例如: fr

在Python2.7中我有一个ruffus管道,但是当我用
-n
-just_print
调用它时,它仍然运行所有实际任务,而不是像预期的那样只打印管道。I:
*不要使用
-n
参数替代内置参数(尽管我有其他命令行参数)
*有一组带有
@transform()
@merge()
装饰器的函数
*使用
run\u pipeline()
调用结束管道


还有其他人遇到过这个问题吗?非常感谢

从ruffus 2.4版开始,您可以使用内置的,它通过使用
argparse
cmdline.py
模块存储适当的标志,例如:

from ruffus import *
parser = cmdline.get_argparse(description='Example pipeline')
options = parser.parse_args()

@originate("test_out.txt")
def run_testFunction(output):
        with open(output,"w") as f:
            f.write("it's working!\n")

cmdline.run(options)
from ruffus import *
import argparse
import sys

parser = argparse.ArgumentParser(description='Example pipeline')
parser.add_argument('--just_print', dest='feature', action='store_true')
parser.set_defaults(feature=False)
args = parser.parse_args()

@originate("test_out.txt")
def run_testFunction(output):
        with open(output,"w") as f:
            f.write("it's working!\n")

if args.feature:
    pipeline_printout(sys.stdout, run_testFunction, verbose = 6)
else:
    pipeline_run(run_testFunction, verbose = 6)
然后使用如下命令从终端运行管道:

python script.py --verbose 6 --target_tasks run_testFunction --just_print
python script.py --just_print

如果您想手动执行此操作(这对于较旧版本的ruffus是必需的),您可以使用
argparse
调用而不是,以便
--just_print
标志引导相应的调用,例如:

from ruffus import *
parser = cmdline.get_argparse(description='Example pipeline')
options = parser.parse_args()

@originate("test_out.txt")
def run_testFunction(output):
        with open(output,"w") as f:
            f.write("it's working!\n")

cmdline.run(options)
from ruffus import *
import argparse
import sys

parser = argparse.ArgumentParser(description='Example pipeline')
parser.add_argument('--just_print', dest='feature', action='store_true')
parser.set_defaults(feature=False)
args = parser.parse_args()

@originate("test_out.txt")
def run_testFunction(output):
        with open(output,"w") as f:
            f.write("it's working!\n")

if args.feature:
    pipeline_printout(sys.stdout, run_testFunction, verbose = 6)
else:
    pipeline_run(run_testFunction, verbose = 6)
然后,您将按如下方式运行该命令:

python script.py --verbose 6 --target_tasks run_testFunction --just_print
python script.py --just_print

这当然是一个功能性的攻击,但它不是违背了ruffus拥有这些内置参数的目的吗?或者内置参数只是建议?@J.C.Szamosi没有内置参数,您需要构建自己的构造。我看过ruffus软件包作者的代码,他也做了类似的事情,这非常有帮助,谢谢!我认为关于预定义选项()的文档有点误导,因此我将就此与他们联系。@J.C.Szamosi实际上我不知道ruffus 2.4中的这些新功能;请参阅我的更新答案和+1以了解问题!啊!!我缺少的是
cmdline.run(选项)
。我有点不确定这与我在脚本中重命名argparse的变量(即
infle=options.I
)的正常习惯是如何相互作用的,但我会继续这样做。非常感谢!