2011-07-25 9 views
1

popen()でtarファイルをuntarしようとしていますが、問題が発生しています。対話型スクリプトを使用するとコマンドが実行されますが、.pyファイルに入れて実行すると実行されません。PythonのUntarringで対話型スクリプトの呼び出し

は基本的に、私はそのディレクトリへに変更し、実行popen("tar xvf the_tar.tar")

なぜこれらは異なるだろうか?どのようにスクリプトで実行されませんか?インタラクティブなセッションとスクリプトの間の同じコード!

編集:私はあなたが見る問題を見ることができないあなたの情報が与えられ

import os, time 
from platform import popen 

os.chdir("C:/testing/") 
popen("tar -xvf the_tar.tar") 
+2

は、使用しているのPythonのバージョンである指摘しましたか? os.popenのドキュメントでは、v2.6以降、その使用法は推奨されなくなりました。代わりに 'サブプロセス'モジュールを使用する必要があります。 – sateesh

+0

Python 2.7.1とPython 3.1.3の質問に関しては、少なくとも以下の答えに示されている解決策で動作することが推奨されています。 – Dilettant

答えて

5

あなたはtarfileライブラリを使用する必要があります関連で

from tarfile import TarFile 

tar = TarFile("the_tar.tar") 
tar.extractall() 
+0

これは機能しますが、なぜ 'tar'プロセスを呼び出す代わりにそれが必要ですか? – kvm

+0

@kvmこれは必須ではありませんが、もっと便利です(すでにpopenで持っている頭痛を見てください:)) –

+3

@kvmはtarfileモジュールを使ってコードを移植します。あなたが書いたコードは、マシンにtarユーティリティがインストールされているかどうかにかかわらず、Pythonが利用可能なプラットフォーム(マシン)で実行されます。 – sateesh

0

を次のように

正確なスクリプトがあります。おそらくコンテキストのビット。私。正確なスクリプトは動作しません、してください。

空のテキストファイルを含むサンプルのtarアーカイブを作成しました。 は、それから私は、このフォルダ内の2つのラインPythonスクリプトを入力:予想通り

x sample.txt 

:私はそれを実行したとして

from platform import popen 
popen("tar xvf the_tar.tar") 

が、それは私を与えました。 エラーはスクリプト内で発生する必要があります。質問 に表示されているスクリプトと同じように、"./"os.chdir()引数をaに変更すると、これも私のMacで動作します。

あなたのマシンのos.chdir("./")に変更してテストしてもよろしいですか?

+0

質問に正確なスクリプトを追加しました – kvm

関連する問題