正常に動作します:Pythonスクリプト - 端子を介して印刷されたコマンドは、私はこのコードを使用してPythonでアーカイブを作成してい
#Creates archive using string like [proxy_16-08-15_08.57.07.tar]
proxyArchiveLabel = 'proxy_%s' % EXECUTION_START_TIME + '.tar'
log.info('Packaging %s ...' % proxyArchiveLabel)
#Removes .tar from label during creation
shutil.make_archive(proxyArchiveLabel.rsplit('.',1)[0], 'tar', verbose=True)
は、これはローカルディレクトリでアーカイブ罰金を作成します。問題は、サイズの問題とこのタスクの必要性のために、削除したいアーカイブに特定のディレクトリがあることです。
ExecWithLogging('tar -vf %s --delete ./roles/jobs/*' % proxyArchiveLabel)
# ------------
def ExecWithLogging(cmd):
print cmd
p = subprocess.Popen(cmd.split(' '), env=os.environ, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while(True):
log.info(p.stdout.readline().strip())
if(p.poll() is not None):
break
しかし、これは基本的に何もしないようです。サイズは変わりません。 ExecWithLogging
の中にcmd
を印刷し、そのコマンドをスクリプトの作業ディレクトリにある端末にコピーすると正常に動作します。確かに、私はまた、tar -vf %s --delete
コマンドの一部としてアーカイブが作成された場所への完全なパスをハードコーディングしてみましたが、何も起こっていないようでした。
は、私は私のINFOログにこの出力得るか:tar: Pattern matching characters used in file names
をので、私は一種の... Popen
が誤って何とか私のコマンドを解釈していると思っています(というか、私は可能性が高い間違って何かに渡しています)。
何か間違っていますか?それ以外に何ができますか?
こちらをご覧ください。なぜターミナルが気にしなかったのか興味があるスーパーになるだろうが、 'ポペン' – MrDuk