簡體   English   中英

從Python問題中運行Shell腳本

[英]Running Shell script from within Python issue

因此,我嘗試從Python運行Shell腳本,並再次檢查script.sh的位置是否正確(因為當我從sublime運行該腳本時, script.sh將打開)。 我必須叫script.sh是:

subprocess.call("script.sh", shell=True)

當我運行該腳本時,該函數返回0。但是,該腳本應該在我的文件夾中創建一個文件並將其寫入,但實際上並沒有這樣做。 當我從cygwin命令提示符運行腳本時,它確實起作用。

有什么事嗎

請確保您已添加:

!/bin/bash

作為第一行,並確保文件script.sh具有可執行權限。

chmod u+x script.sh

然后嘗試指定完整路徑:

subprocess.call("/complete/path/script.sh", shell=True)

在您的Shell腳本頂部的某處,放置以下行:

pwd >/tmp/mytempfile

然后運行Python腳本並進入該文件。

這樣一來,您就可以找到腳本的工作目錄,在大多數情況下,該目錄似乎並未創建文件,因此與您認為的目錄不同。

您可能還需要檢查shell腳本,以確保在創建文件之前它不會更改工作目錄,但是如果您從命令行說它可以正常工作,那將不太可能。

如果添加該行以創建臨時文件,但實際上並未創建該行,則說明腳本未執行。

在這種情況下,您可以嘗試一些方法。 一種是完全指定腳本,以免Python不在正確的目錄中。 換句話說,類似:

subprocess.call("/actual/path/to/script.sh", shell=True)

或者,您可以嘗試使用腳本作為參數運行實際的bash可執行文件:

subprocess.call("bash -c script.sh", shell=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM