2017-01-28 9 views
0

PythonスクリプトをPythonスクリプトで書いています。私はcommands.getoutputを使って "ディレクトリ内のファイルのリスト"を実行したいのですが、私のprobleamは "私はpythonでディレクトリパスを定義しました。.Iは、以下にしようとした "DIR_NAME" のような変数Python変数をlinuxコマンドに呼び出す方法

dir_name="/user/pjanga/python_test" 
index_list=commands.getoutput('ls -l',dir_name,'| 'wc -l') 

エラー: -

File "diii.py", line 10 
    index_list=commands.getoutput('ls -l',dir_name,'| 'wc -l') 
                 ^
SyntaxError: invalid syntax 

あなたは、実行私を助けてもらえここ

+2

私はシンタックスハイライトがすべてそうだと思っています... –

答えて

2

いくつかの問題、試してみてください。?

index_list = commands.getoutput('ls -l ' + dir_name + ' | wc -l') 
文字列の連結は、カンマではなく、 +であり、一重引用符の数が不均一です。 ls -lの後のスペースにも注意してください。

しかし、これを実行する方法ははるかに優れています。まず、答えはディレクトリ内のファイル数を表していません。コマンドラインでls -lを実行すると、最初の行がファイル名ではなく「合計」であることがわかります(これは履歴であり、ブロックの数を表しており、かなり役に立たない)。

ls -lの代わりにlsを使用した場合、この問題は発生しません。

しかし、2つの独立した外部のプログラム、使用パイソン呼び出す必要はありません。

import os 
index_list = len([name for name in os.listdir(dir_name) ]) 

は、ここでは、ちょうどそのリスト内の項目数を取得し、os.listdir()を呼び出し、ファイル名のリストを作成します。

これを行うには、Pythonでいくつかの方法があります。

+0

ありがとう、それは今働いています – Prasad

0

Linuxマシンでpythonからコマンドを実行する方法はいくつかあります。

方法1:

index_list = commands.getoutput('ls -l ' + dir_name + ' | wc -l') 

方法2:

import os 
os.system("ls -l ' + dir_name + ' | wc -l') 

方法3:

import subprocess 
index_list = subprocess.check_output('ls -l ' + dir_name + ' | wc -l, shell=True) 

はそれが役に立てば幸い!

関連する問題