2017-04-27 8 views
0

現在、私はPythonでos.systemメソッドを使ってシェルスクリプトを実行しようとしています。シェルスクリプトを実行するためにPythonを呼び出す

Pythonコード:

file = open("History.txt","w") 
file.write(history) 
os.system('./TFPupload.sh') 

シェルスクリプトコード:まず

#!/bin/sh 

HOST="ftp.finalyearproject95.com" 
USER='*****' 
PASSWD='*****' 
FILE='History.txt' 

ftp -n $HOST <<END_SCRIPT 
quote USER $USER 
quote PASS $PASSWD 
put $FILE 
quit 
END_SCRIPT 

echo ">>>uploaded<<<\n" 

exit 0 

、私はそれが完璧に動作するものでPythonのコードと、シェルスクリプト1を実行しようとしました。しかし、私はPythonを使用して、データベースにデータを含む 'History.txt'ファイルをアップロードする代わりに、シェルスクリプトを実行しようとすると、アップロードされたファイルは空のファイルになります。私は 'nano History.txt'を使ってチェックすると、データベースにテキストファイルを渡したときにのみデータが含まれ、データベースは空になります。それはなぜです?

+1

あなたが書かれた内容がディスクに書き込まれることを確認するために開いたファイルを閉じるか、フラッシュする必要があります。 – metatoaster

+0

ご協力いただきありがとうございます。それは本当に私の問題を解決した – beginner

答えて

0

使用可能な限りファイルを開くためにWithステートメントを使用します。

with open("History.txt","w") as file : 
    file.write(history) 

os.system('./TFPupload.sh') 

with文でfdを単独で終了します。

いくつか参考:What is the python "with" statement designed for?

+0

これはまた良い提案です。助けてくれてありがと – beginner

関連する問題