2017-08-07 7 views
1

私はPython をPythonと思っています。私は例のコードを試してみたときに、私はに走った問題は次のとおりです。os.popenに問題がある

import os 
cmd = 'ls -l' 
fp = os.popen(cmd) 
res = fp.read() 
stat = fp.close() 
print res 

しかし、print resは唯一それが長い形式で、現在のディレクトリの内容を表示する必要があり、空の文字列を返します。 print statは、プロセスで問題が発生したことを示す1を返しますが、エラーメッセージはありません。私は間違って何をしていますか?

+0

使用している場合は?ただ尋ねる。 –

+0

['os.popen()'](https://docs.python.org/2/library/os.html#os.popen):バージョン2.6以降の非推奨:この関数は廃止されました。 ['subprocess'](https://docs.python.org/2/library/subprocess.html#module-subprocess)モジュールを使用してください。特に旧機能をサブプロセスモジュールセクションに置き換えることを確認してください._ – Arount

+0

ありがとうございます。私は私の質問がとても素早く答えられるとは思っていませんでした。 – Jamie

答えて

0

私の最初の推測は、あなたがWindowsシステムで作業していることです。 'ls -l'を 'dir'で置き換えると、それはウィンドウ上で動作するはずです。

0

あなたのコードは正常に動作しているだけで、Windowsシステム上で作業しています。 私はあなたのコードを修正:

import os 

cmd = 'dir' 
fp = os.popen(cmd) 
res = fp.read() 
stat = fp.close() 
print res 
print stat 
0

それはすべきである(少なくとも)はPython 2.7で動作します。

バージョンで撤廃

:それは作品(私はそれがPythonやos.popen()問題が、他のよりメタなことではないと思う)けど、os.popen() docからなかった理由を

とにかく、それが応答しません2.6:この関数は廃止されました。 subprocessモジュールを使用してください。特に古い機能を サブプロセスモジュールセクションに置き換えるかどうかを確認してください。


は、Windowsは、あなたがLinuxの権利でこれをしようとしているdirを使用する代わりにls