【问题标题】:Python include shell path filenamePython包含shell路径文件名
【发布时间】:2019-10-29 11:04:47
【问题描述】:

这是我在 shell 中的代码,我包含了 python 命令:

for file in `ls $FOLDER`
do
    echo "$file"
    var=`python -c "from Bio import SeqIO, SeqUtils; import os; rec = SeqIO.read("**$FOLDER/$file**", 'fasta'); SeqUtils.xGC_skew(rec.seq, 220000)" `
done

而且我不知道如何让python识别我的文件名

【问题讨论】:

  • 您是否遇到任何错误?如果是,请在问题中添加错误输出。
  • 这是错误:回溯(最近一次调用最后一次):文件“”,第 1 行,在 文件“/home/criuser/anaconda2/lib/python2.7/ site-packages/Bio/SeqIO/__init__.py",第 671 行,在读取中引发 ValueError("发现多个记录
  • 它就像没有看到我的文件,我不知道如何用python方式告诉它'$FOLDER/$file'

标签: python shell path command


【解决方案1】:

python代码中需要对双引号进行转义:

for file in `ls $FOLDER`
do
    echo "$file"
    var=`python -c "from Bio import SeqIO, SeqUtils; import os; rec = SeqIO.read(\"$FOLDER/$file\", 'fasta'); SeqUtils.xGC_skew(rec.seq, 220000)" `
done

【讨论】:

    【解决方案2】:

    我看到了一些常见的 shell 错误:

    • Don't parse ls。利用
      for file in "$FOLDER"/*; ...
      
    • 使用$(...) 而不是`...` -- 更易于阅读、更易于嵌套。 Reference
    • 改掉使用 ALLCAPS 变量名的习惯,保留那些由 s​​hell 保留的名称。有一天你会写PATH=something,然后写wonder why your script is broken

    【讨论】:

      猜你喜欢
      • 2011-01-08
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      • 2014-10-21
      • 2011-12-22
      • 2011-04-19
      • 2019-05-07
      • 1970-01-01
      相关资源
      最近更新 更多