如何生成一个数字序列,稍后可以在python的命令行中使用?

如何生成一个数字序列,稍后可以在python的命令行中使用?,python,numbers,range,Python,Numbers,Range,我想做的是编写一个脚本,其中包含一些文件作为输入,然后对它们运行一些命令!我首先想知道用户有多少文件,然后要求他/她上传,然后我想在上面运行一些命令。 因此,我很久以前就在类似的情况下使用了这个命令:for cnt inseq 19 2 31,但是现在当我使用这个命令时,我得到了一个syntex错误! 这是我的名片: readnumber= raw_input("How many pares do you have?" ) for cnt in `seq 1 1 int(readnumber)`

我想做的是编写一个脚本,其中包含一些文件作为输入,然后对它们运行一些命令!我首先想知道用户有多少文件,然后要求他/她上传,然后我想在上面运行一些命令。 因此,我很久以前就在类似的情况下使用了这个命令:
for cnt in
seq 19 2 31,但是现在当我使用这个命令时,我得到了一个syntex错误! 这是我的名片:

readnumber= raw_input("How many pares do you have?" )
for cnt in `seq 1 1 int(readnumber)`; do
    pare$cnt-a = raw_input("filename of pare$cnt-a: ")
    pare$cnt-b = raw_input("filename of pare$cnt-b: ")
    cmd = "samtools merge   pare$cnt.bam pare$cnt-a pare$cnt-b"
这就是我得到的错误:

>         for cnt in 'seq 1 1 int(readnumber)'; do
>                                             ^
>     SyntaxError: invalid syntax
因此,我的经验是,当您将readnumber=3放入时,它会要求您上传(或输入)以下内容:


然后在上面运行我的命令

您正试图在python程序中使用bash语法。他们是不同的语言。例如,
seq
命令应改为
xrange(…)
命令。您还使用bash变量语法
$somevar
,而不是python的变量语法

因此,要么使用bash,要么使用Python,但不要尝试混用n-match


,您可能需要考虑让用户在命令行上提供文件名,而不是提示用户使用它们。这将使您的脚本在以后用作构建块时更加有用。

您正在尝试在python程序中使用bash语法。他们是不同的语言。例如,
seq
命令应改为
xrange(…)
命令。您还使用bash变量语法
$somevar
,而不是python的变量语法

因此,要么使用bash,要么使用Python,但不要尝试混用n-match


,您可能需要考虑让用户在命令行上提供文件名,而不是提示用户使用它们。这将使您的脚本在以后作为构建块时更加有用。

您似乎将Python与bash脚本混为一谈
raw_input
是Python,但脚本中的其他所有内容都是bash


与其尝试用Python重写整个过程,不如直接使用bash,也许可以使用
read
命令,而不是原始输入。

您似乎将Python与bash脚本混为一谈
raw_input
是Python,但脚本中的其他所有内容都是bash


与其尝试用Python重写整个过程,不如使用bash,也许可以使用
read
命令,而不是原始输入。

您可能需要这样的东西:

pairs = int(raw_input("How many pairs do you have?"))
for pair_n in xrange(1, pairs + 1):
  file1 = raw_input("pair%d-a: " % pair_n)
  file2 = raw_input("pair%d-b: " % pair_n)
  cmd = "samtools merge pair%d.bam '%s' '%s'" % (pair_n, file1, file2)
  # os.system(cmd) to run the command.

你可能想要这样的东西:

pairs = int(raw_input("How many pairs do you have?"))
for pair_n in xrange(1, pairs + 1):
  file1 = raw_input("pair%d-a: " % pair_n)
  file2 = raw_input("pair%d-b: " % pair_n)
  cmd = "samtools merge pair%d.bam '%s' '%s'" % (pair_n, file1, file2)
  # os.system(cmd) to run the command.

您的
for
-行不是Python代码,而是
bash
-shell中使用的for语句

您要做的是将for行重写为:

for cnt in range(1, readnumber):

另外,您还必须重写其他行,因为它们也是bash语法。

您的
for
-行不是Python代码,而是
bash
-shell中使用的for语句

您要做的是将for行重写为:

for cnt in range(1, readnumber):

另外,您还必须重写其他行,因为它们也是bash语法。

您将bash shell脚本语法与Python混淆了……您是否将bash语法与Python混合在一起?我想是的!好吧,这就是它不起作用的原因!你知道我如何在python中做到这一点吗?你把Bash shell脚本语法和python搞混了……你是在把Bash语法和python混合在一起吗?我想是的!好吧,这就是它不起作用的原因!你知道我如何用python来实现这一点吗?@mahmood:这似乎是python获得你想要的东西的方式。如果您真的想从python运行Bash命令,您可以使用
os.system(command)
subprocess.popen(command)
,例如(如果需要,可以用谷歌搜索这些示例)。非常感谢!不,我想使用python,但我将它与我的旧bash命令混合使用了!谢谢你的回答这是我想要的wanted@mahmood:这似乎是Python获得您想要的东西的方法。如果您真的想从python运行Bash命令,您可以使用
os.system(command)
subprocess.popen(command)
,例如(如果需要,可以用谷歌搜索这些示例)。非常感谢!不,我想使用python,但我将它与我的旧bash命令混合使用了!谢谢你的回答,这正是我想要的。我同意@DanielRoseman的观点,只是我想借此机会学习Python,因为它比bash对某些任务(当然不是所有任务)更强大。实际上,在linux系统中,以正确的方式混合Python和Bash是一种非常强大的方式,可以轻松快速地完成琐碎和非琐碎的任务。是的,我理解我的错误!但我想用python编写它。无论如何,谢谢。我同意@DanielRoseman的观点,只是我想借此机会学习Python,因为它比bash对某些任务(当然不是所有任务)更强大。实际上,在linux系统中,以正确的方式混合Python和Bash是一种非常强大的方式,可以轻松快速地完成琐碎和非琐碎的任务。是的,我理解我的错误!但我想用python编写它。无论如何,谢谢你。