import subprocess
import os
#files
src_file = '/../copy_me_test.txt'
destination_file = 'paste_here.txt'
#make copy of file
shell_command = 'cp "%s" "%s"' % (src_file, destination_file)
successful = subprocess.call(shell_command, shell = True)
print(successful)
私は1つのディレクトリから別のディレクトリにファイルをコピーしています。私がsubprocess.call()メソッドを実行すると、それは1を返します。何も起こらず、私の端末に次のメッセージが表示されます。エラーPythonサブプロセス呼び出しコピーファイル。ファイルはありません。失敗しますが、1を返します。なぜですか?
cp: /Users/my_name/Desktop/python/copy_files/copy_me_test.txt: No such file or directory
1
ここでは何が起こっていますか?これは、ファイルのコピーを作成できなかったので、0を返してはいけません。私はすでに仕事をしましたが、なぜこれが起こっているのか誰もが知っているかどうか知りたいのですが?どんな情報やリンクも高く評価されます。
サイドノート:シェルプログラムを使用しないでください。 Python内から直接これを行うには、['shutil.copyfile'とfriends(https://docs.python.org/3/library/shutil.html#shutil.copyfile)を見てください。エラーチェック/携帯以外の外部プログラムの使用。 – ShadowRanger
私はそれをします。私はPythonには新しいので、アドバイスをいただければ幸いです。私はあなたが「壊れやすい/エラーチェックが難しい/外付けの外部プログラムの使い方がない」ということを本当に理解していません。 –
実行可能ファイルをサブプロセスとして呼び出すときに、Pythonで例外をキャッチする代わりに、戻りコードを取得して、それをif-elseラダーの既知のエラーコードと比較する必要があります。これは使いにくいものです。エラーコードは、スクリプトが実行されているプラットフォームによって異なる場合があり、移植できない可能性があります。また、実行可能ファイルの新しいバージョンでリターンコードが変更され、脆弱になることがあります。 – JacaByte