Питон пәрмен жолдарында кейінірек пайдаланыла алатын сандар тізбегін қалай құруға болады?

Мен өзіме қандай да бір файлдарды енгізу сияқты сценарий жазып, содан кейін оларға қандай да бір пәрменді іске қосқым келеді. Мен алдымен пайдаланушыға қанша файлды дозалап, содан кейін оны қотарып беруін сұраймын, содан кейін оған бірнеше тапсырманы орындауды қалаймын. Сондықтан, мен осы команданы қолдандым: for cnt in seq 19 2 31 ұқсас жағдайға ұзақ уақыт бұрын, бірақ енді осы команданы қолданған кезде мен синтаксистік қате аламын! бұл менің командам:

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 қойған кезде, мен сізді жүктеуді (немесе енгізуді) сұрайды:

pare1-a:
pare1-b:
pare2-a:
pare2-b:
pare3-a:
pare3-b:

содан кейін менің бұйрығымды орындаңыз!

0
Мен де ойлаймын! Жақсы, сондықтан ол жұмыс істемейді! қандай да бір идеяны мұны питонда қалай жасауға болады?
қосылды автор mahmood, көзі
Bash синтаксисін python арқылы араластырасыз ба?
қосылды автор mouad, көзі
Python көмегімен Bash снарядтар сценарий синтаксисі сияқты болып көрінетін ...
қосылды автор AKX, көзі

4 жауаптар

Мүмкін сіз осындай нәрсе болуы мүмкін:

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.
2
қосылды
көп рақмет! Мен питонды қолданғым келмеді, бірақ оны ескі Bash командасымен араластырдым! жауап үшін рақмет бұл мен қалаған нәрсе
қосылды автор mahmood, көзі
@mahmood: Бұл сіз қалаған нәрсені алудың Python жолы. Егер сіз шын питоннан Bash тапсырмасын орындағыңыз келсе, мысалы, os.system (command) немесе subprocess.popen (command) , қажет болған жағдайда).
қосылды автор heltonbiker, көзі

Python-ді bash сценарийімен араластыру сияқты көрінесіз. raw_input - бұл Python, бірақ сценарийдегі қалған нәрсе - bash.

Python-дағы барлық нәрсені қайта жазуға тырысқанның орнына, raw_input орнына read командасымен ғана қолдансаңыз болады.

1
қосылды
иә, менің қателігімді түсінемін! бірақ мен оны питонға жазғым келеді. бәрібір рахмет.
қосылды автор mahmood, көзі
Мен @DanielRoseman-мен келісемін, бірақ мен Python-ды үйрену мүмкіндігін пайдаланатын боламын, себебі ол кейбір тапсырмаларды орындаудан гөрі күшті (бірақ әр тапсырма емес). Іс жүзінде, linux жүйесінде Python және Bash THE RIGHT WAY-ды араластыру оңай және жылдам түрде тривиальды және тривиалдық емес тапсырмаларды орындаудың өте қуатты тәсілі болып табылады.
қосылды автор heltonbiker, көзі

for - сіздің кодыңыз Python-код емес, бұл bash -shells-де пайдаланылатын мәлімдеме.

Сіз не істегіңіз келсе, желіге қайта жазу керек:

for cnt in range(1, readnumber):

Сондай-ақ, сіз басқа жолдарды қайта жазуыңыз керек, себебі олар bash-синтаксисі болып табылады.

0
қосылды

Сіз python бағдарламасында bash синтаксисін қолдануға тырысасыз. Олар түрлі тілдер. Мысалы, seq командасы xrange (...) командасы болуға тиіс. Сондай-ақ, python айнымалы синтаксисінің орнына bash айнымалы синтаксисін $ somevar қолданып отырсыз.

Мәселен немесе bash немесе Python пайдаланыңыз, бірақ араластыруға тырыспаңыз.

Сіз пайдаланушыға пәрмен жолында файл атауларын беріп, пайдаланушыны олардан сұрамайтынын ескеруіңіз мүмкін. Бұл сценарий кейінірек құрылыс блогы ретінде пайдалы болады.

0
қосылды