О вставке команд оболочки в python - PullRequest
1 голос
/ 27 июня 2011

Я вставил некоторые команды оболочки в скрипт Python, как показано ниже:

#!/usr/bin/python

import os,sys,re
import gzip
import commands

path = "/home/x/nearline"

for file in os.listdir(path):
  if re.match('.*\.recal.fastq.gz', file):
    fullpath = os.path.join(path, file)
    result = commands.getoutput('zcat fullpath |wc -l')
    numseqs = int(result)/4.0
  print numseqs

zcat fullpath |wc -l - вставленная команда оболочки.

Проблема в том, что я определяю fullpath здесь для всех fastq файлов, но после помещения в ' ' кажется, что fullpath не работает. Как я могу решить эту проблему?

Ответы [ 3 ]

5 голосов
/ 27 июня 2011

Вы должны объединить строку со значением переменной:

result = commands.getoutput('zcat ' + fullpath + ' |wc -l')
3 голосов
/ 27 июня 2011

fullpath - это переменная, вам нужно объединить ее с остальной частью команды следующим образом:

result = commands.getoutput('zcat ' + fullpath + ' |wc -l')

1 голос
/ 27 июня 2011

Попробуйте

commands.getoutput('zcat ' + fullpath + ' |wc -l')

, поскольку переменные Python не раскрываются автоматически в строках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...