2016-11-05 45 views
0

我的python cmd腳本有問題。 我不知道爲什麼它不起作用。也許我的代碼有問題。 我試圖通過我的python腳本在cmdline中運行程序。sh:1:語法錯誤:重定向意外的Python/Bash

並即時得到在bash錯誤 「SH:1:語法錯誤:重定向意外」

請使用Spyder的(Anaconda)的幫助我只是生物學家:)

流明/ Ubuntu的

#!/usr/bin/python 

import sys 
import os 

input_ = sys.argv[1] 
output_file = open(sys.argv[2],'a+')  
names = input_.rsplit('.') 

for name in names: 
    os.system("esearch -db pubmed -query %s | efetch -format xml | xtract -pattern PubmedArticle -element AbstractText >> %s" % (name, output_file)) 
    print("------------------------------------------") 

回答

4

output_file是一個文件對象。當你做"%s" % output_file時,結果字符串就像"<open file 'filename', mode 'a+' at 0x7f1234567890>"。這意味着,使用os.system調用運行如下命令

command... >> <open file 'filename', mode 'a+' at 0x7f1234567890> 

<>>後導致「語法錯誤:重定向意外的」錯誤消息。

爲了解決這個問題,不要在你的Python腳本打開輸出文件,只是使用的文件名:

output_file = sys.argv[2] 
0

我上以下行類似的錯誤:

os.system('logger Status changed on %s' %s repr(datetime.now()) 

事實上,隨着遊牧類型表示問題在於運行普通的操作系統命令。該命令可能包含特殊字符。在我的情況下,這是<

所以不是顯著改變操作系統命令,我剛添加的報價和這個作品:

os.system('logger "Status changed on %s"' %s repr(datetime.now()) 

行情使無形的殼傳遞參數的內容。