0

run次の単純なスネークファイルを考えてみましょう。これは、命令でファイルを書き込もうとする試みです。

rule all:
    input:
        "test.txt"

rule make_test:
    output:
        filename = "test.txt"
    run:
        with open(output.filename) as f:
            f.write("test")

実行すると、次のようになります。

Provided cores: 1
Rules claiming more threads will be scaled down.
Job counts:
    count   jobs
    1   all
    1   make_test
    2
rule make_test:
    output: test.txt
Error in job make_test while creating output file test.txt.
RuleException:
FileNotFoundError in line 10 of /tmp/Snakefile:
[Errno 2] No such file or directory: 'test.txt'
  File "/tmp/Snakefile", line 10, in __rule_make_test
Will exit after finishing currently running jobs.
Exiting because a job execution failed. Look above for error message

これにはビックリですFileNotFoundErrormake_test明らかに、これがルールで作成したいファイルであることをsnakemakeに伝える正しい方法が見つかりませんでした。

また、出力構文を次のように変更してみました。

rule all:
    input:
        "test.txt"

rule make_test:
    output:
        "test.txt"
    run:
        with open(output[0]) as f:
            f.write("test")

エラーは同じです。

何が起こっていますか?

4

1 に答える 1

0

バグの理由がわかりました。ファイルを書き込みモードで開くのを単に忘れていたのです。

すべてルール: 入力: "test.txt"

以下の作品:

rule make_test:
    output:
        "test.txt"
    run:
        with open(output[0], "w") as f:
            f.write("test")
于 2016-12-02T17:00:29.733 に答える