2017-07-08 5 views
0

これまでは、私がPython開発を行うためにUNIXサーバを使っていたときに、フォルダやディレクトリ全体を渡したければ、その末尾にアスタリスク()があります。例は、users/wilkenia/shakespeare/のようなもので、シェイクスピアの演奏のそれぞれを含むファイルのセットを渡すものです。ウィンドウでこれを行う方法はありますか?私はC:\ Users \ Alexander \ Desktop \ coding-data-exam \ wx_data *に入れてみましたが、同じディスク名を削除しました。これまでに何も働いていない、実際には、それは引数そのものとしてディレクトリを取ります。コマンドラインとsys.argvを使ってpythonにディレクトリ全体を渡す方法

編集:管理者として実行しているにも関わらず、実装されたglobが権限エラーを取得しています。誰かが見たいと思ったらここに私のcodeがある。

+0

、WindowsのCMDラインはglobをサポートしていませんが、あなたが渡すことができますは、Pythonの古いバージョンを使用している場合、あなたはは、PyPIから取得することができますバックポートパッケージを使用する必要がありますPythonの 'glob'モジュールへの引数 – AChampion

+0

[pathlib](https://docs.python.org/3/library/pathlib.html)を見てください。あなたがしようとしていることを工夫するのに役立つ非常に強力なツールです。 – idjaw

答えて

2

globモジュールを使用できます。これはまさにこれです。

迅速なデモ:

In [81]: import glob 

In [82]: glob.glob('*') 
Out[82]: 
[ 
... # a bunch of my personal files from my cwd 
] 

あなたのユースケースのためにこれを拡張したい場合は、の線に沿って何かをする必要があります:

import sys 
import glob 

arg = sys.argv[1] 

for file in glob.glob(arg): 
    .... 

あなたのを読んであげますargsをsys.argvとし、それをglobに渡す。

1

pathlibを使用してこの結果を得る方法を示すためです。あなたはこのような何かを行うことができます。

some_script.py:

from pathlib import Path 

path = Path(sys.argv[1]) 

glob_path = path.glob('*') 

for file_path in glob_path: 
    print(file_path) 

デモ:

python some_script.py C:/some/path/ 

出力:

C:/some/path/depth_1.txt 
C:/some/path/dude.docx 
C:/some/path/dude.py 
C:/some/path/dude_bock.txt 

pathlibのいいところは、それがかかることですファイルシステムの操作を容易にするオブジェクト指向のアプローチ。

注:pathlibはPython 3.4以降ののです。単にhere

pip install pathlib2

関連する問題