2017-01-15 77 views
0

我正在編寫一個程序來處理服務器上的一些數據。在整個程序中,許多文件被製作並作爲輸入發送到其他程序。要做到這一點,我平時做的命令字符串,然後像這樣運行:Python終端調用無法與文件進行交互

cmd = "prog input_file1 input_file2 > outputfile" 
os.system(cmd) 

當我運行命令,但是,這些程序被稱爲報告說,他們無法打開文件。如果我在本地計算機上運行python代碼,那沒問題。當我將它加載到服務器上時,它開始失敗。我認爲這與權限問題有關,但我不知道如何解決這個問題。許多文件,特別是輸出文件,都是在運行時創建的。輸入文件對所有用戶具有完全權限。任何幫助或建議,將不勝感激!

乾杯!

+1

檢查包含生成文件的目錄的權限:運行腳本的進程必須對目錄具有寫權限才能在其中創建文件。 – xzoert

+0

該目錄擁有所有用戶的完全權限。 – Grimey

+0

您的本地PC是否運行Windows和服務器Linux?本地目錄不是Linux中搜索路徑的一個元素,所以'prog something'通常會引發一個錯誤消息,如'prog:command not found'。您必須命名「prog」所在的目錄。 './prog something'應該可以工作。 – Marvo

回答

0

您列出的Python代碼簡單且正確,所以問題可能不在您的示例的兩行中。以下是您需要查看的一些相關區域。

權限 運行python腳本的用戶必須具有相應的權限(讀,寫,執行)。我從評論中看到,你已經檢查過了。

如果該命令中的示例文本直接輸入到你的源代碼一樣,那麼你知道什麼命令,你運行 什麼命令運行,但如果要生成的任何部分(如列表的操作數,輸出文件的名稱,其他參數等),確保代碼生成命令的部分沒有錯誤。例如,在致電os.system(cmd)之前,請考慮包括類似print("About to execute: " + cmd)的行,以便您可以準確查看要運行的內容。

直接調用命令 如果以上所有內容看起來不錯,請嘗試直接在服務器上的終端執行該命令。你會得到什麼輸出。問題可能出在底層命令本身而不是Python代碼上。

相關問題