2017-11-22 11 views
0

ユーザー定義のディレクトリからファイルのリストを取得するのに問題があります。次のコードは正常に動作します。Python - ユーザー入力としてファイルディレクトリを取得する

inputdirectory = r'C:/test/files' 
inputfileextensions = 'txt' 
files = glob.glob(inputdirectory+"*."+inputfileextensions) 

しかし、私はユーザーがその場所に入力することを許可します。私は次のコードを試しました:

inputdirectory = input("Please type in the full path of the folder containing your files: ") 
inputfileextensions = input("Please type in the file extension of your files: ") 
files = glob.glob(inputdirectory+"*."+inputfileextensions) 

しかし、それは動作しません。エラーメッセージは表示されませんが、ファイルは空のまま返されます。私は引用符付きのディレクトリに前方スラッシュと後方スラッシュを入力しようとしましたが、動作させることはできません。私も入力を 'r'を使って生の文字列に変換しようとしましたが、構文によっては間違っています。何か案は?

+0

試してみてください: 'inputdirectory +" *。 "+ inputfileextensions' –

答えて

1

最初のバージョンの仕組みがわかりません。

あなたが達成しようとしているのではない何かことを実現することができます上記の値を見てみると
inputdirectory+"*."+inputfileextensions == "C:\test\files*.txt" 

:変数が定義されているように、あなたのようなものとしてグロブへの入力が必要です。代わりに、バックスラッシュ演算子を使用して2つのパスに参加する必要があります。ような何か:この変更により

os.path.join(inputdirectory, "*."+inputfileextensions) == "C:\test\files\*.txt" 

、コードに関係なく、入力がユーザーまたは事前定義から取られているかどうかの動作するはずです。

+0

ありがとう、これは完全に動作します。他の誰かが似たようなコメントをしたが、彼のコメントを削除したので、あなたは勝つ! – Actuary

+0

喜んで助けてください。答えがあなたのために働くならば、それを受け入れられたものとしてマークすることができます:) – ThePretendProgrammer

1

os.path.joinでパスへの参加を試みます。スラッシュの問題を処理します。

import os 
... 
files = glob.glob(os.path.join(inputdirectory, "*."+inputfileextensions)) 
関連する問題