使用'~';输入指令中的(又称tilde)似乎不起作用?
这是我第一次尝试在输入中使用“~”。 当我将“~”转换为绝对路径时,它会起作用 证明它们是同一文件:使用'~';输入指令中的(又称tilde)似乎不起作用?,tilde,snakemake,Tilde,Snakemake,这是我第一次尝试在输入中使用“~”。 当我将“~”转换为绝对路径时,它会起作用 证明它们是同一文件: (CentOS5-Compatible) [tboyarski@login2 6-bamMetrics]$ ls ~/share/references/rRNA.ensg72.hg19.interval_list -rw-rw-r-- 1 fcchan users 24K Dec 12 2013 /home/tboyarski/share/references/rRNA.ensg72.hg19
(CentOS5-Compatible) [tboyarski@login2 6-bamMetrics]$ ls ~/share/references/rRNA.ensg72.hg19.interval_list
-rw-rw-r-- 1 fcchan users 24K Dec 12 2013 /home/tboyarski/share/references/rRNA.ensg72.hg19.interval_list
(CentOS5-Compatible) [tboyarski@login2 6-bamMetrics]$ ls /genesis/extscratch/clc/references/rRNA.ensg72.hg19.interval_list
-rw-rw-r-- 1 fcchan users 24K Dec 12 2013 /genesis/extscratch/clc/references/rRNA.ensg72.hg19.interval_list
(CentOS5-Compatible) [tboyarski@login2 6-bamMetrics]$ ls /home/tboyarski/share/references/rRNA.ensg72.hg19.interval_list
-rw-rw-r-- 1 fcchan users 24K Dec 12 2013 /home/tboyarski/share/references/rRNA.ensg72.hg19.interval_list
不起作用:
rule intervalList:
input:
"~/share/references/rRNA.ensg72.hg19.interval_list"
作品:
rule intervalList:
input:
"/home/tboyarski/share/references/rRNA.ensg72.hg19.interval_list"
我现在只尝试在输入指令中使用它。我可能会花点时间看看它是否可以作为一个输出指令(不是我需要的东西,只是好奇而已)
想法
编辑
@alvits能够指出,在对~求值之前,shell会将~转换为${HOME}。似乎在向蛇行提供~时,不会发生这种转换。简单的替代方法是始终使用${HOME},它可以在MacOSX和Linux上工作:)
我成功地使用了以下各项:
rule intervalList:
input:
"${HOME}/share/references/rRNA.ensg72.hg19.interval_list"
第二次编辑
用户指出我所认为的解决方案实际上并非如此。
解决方案是在输入指令中不使用“~”或“${HOME}”。您可以尝试在
os.path.expanduser
中包装路径(在snakefile中导入操作系统后可用):
在Unix和Windows上,返回参数时,初始组件~
或~user
被该用户的主目录替换
(引自文档:)我将结束这个问题 我最终同意了它的建议 我之所以选择它,是因为这是tilde所代表的,所以以非引用形式提供它是有意义的 expanduser包装虽然是一种可能性,但对于所需的内容来说,这是一种过分的做法 谢谢大家的帮助 2017/06/09-编辑:不要在Snakemake输入中使用“~”或“${HOME}”。 在看到约翰内斯·克斯特的评论后,我再次检查了我所做的事情,但我无法复制它 很抱歉给你带来了困惑。非常感谢您捕捉到这个错误J.K
我不确定我之前安装了什么。我最终改变了文件的使用方式,即使使用git,我也无法复制它 Shell中的
~
会进行波浪线扩展~
本身就相当于${HOME}
snakemake
不是外壳,也没有扩展。这似乎对我有好处。我将使用${HOME}。我真的需要相对论。非常感谢。嗯,实际上我看不出这是怎么回事。Snakemake不扩展${HOME}。因为它不是一个外壳,所以它从字面上看占据了每一条路径。它的行为就像python。你的逻辑是无可挑剔的J.K。我编辑了这篇文章来反映这一点。谢谢你的接球!