2016-09-06 2 views
0

私はこのトピックに関するいくつかの記事を見てきましたが、私の使い方に特に合ったものは見ていません。同じ問題にThis one looks to be close彼らはエスケープ文字をエスケープすることについて話します。Pythonのraw_inputからos.listdir(パス)にスペースを入れたディレクトリを渡します。

私の問題は、このスクリプトをMACとPCシステムの両方で実行し、フォルダ名にスペースが含まれているサブフォルダ内のファイルを処理できるようにすることです。

は今、私はいくつかの異なるSOの記事から部分的に収集、このコードを使用します

directory = raw_input("Enter the location of the files: ") 
path = r"%s" % directory 

for file in os.listdir(path): 

は、私はかなり二行目が何をしているかを理解していないが - ので、おそらくそれは微調整を必要とする明白なラインです。通常のフォルダ名では正常に動作しますが、名前にスペースは含まれません。

私はちょうど ""の代わりに "\"を使用しようとしましたが、それはうまくいきませんでしたが、いずれにせよ私はコードソリューションを探しています。私は、ユーザーが(引用符なし)プロンプトraw_inputに応じてサブフォルダ名「LASデータ」を使用してWindozeでエスケープ文字

を指定する必要がありますする必要はありません、私はメッセージを取得している:

システムは、パスが「LASデータ\ *。*」

+0

**この場合、os.path.normpath **は動作しません。 MACとはまったく関係がありませんでしたからです。 –

+0

と私は "LAS Data \ *。*"がglobingパターンを参照していますか? –

+0

@Take_Care_何をお勧めしますか?私はあなたのコメントを理解できません。私の質問を更新して、raw_inputパラメータに応じて "LAS Data"(引用符は不要)を入力していることを示しました。 – dbmitch

答えて

2

あなたの問題は、あなたが提示したコードと最も可能性が高いではありませんが、あなたが与えた入力とを指定見つけることができません。メッセージ

システムは指定されたパスを見つけることができません「LASデータ\ *を。*」

は、あなた(またはユーザー)は、ファイルのワイルドカードと一緒にディレクトリに入ったことを示唆しています。 "LAS Data \ *。*"という名前のディレクトリは実際には存在しません(あなたのファイルシステムにとって特別なことをしない限り:-)。

代わりに「LASデータ」と入力してください。

生の文字列は

> python 
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> directory = raw_input("Enter the location of the files: ") 
Enter the location of the files: Directory with Spaces 
>>> for file in os.listdir(directory): 
...  print(file) 
... 
hello-1.txt 
hello-2.txt 
>>> 
+0

それは私がやっていることです - 私の質問を更新しました。私はすべてのファイルを得ることができるように、コード 'path = r"%s "%directory"がパスに "\ *。*"を追加しなければならないと思っていますか? – dbmitch

+1

@dbmitch 'path = r"%s "%directory"は何も追加できません。単純な文字列補間です。 –

+0

その行がなくてもうまく動作します。エスケープ文字またはワイルドカードで正しいフォルダ名を指定してください。ありがとうございます。 – dbmitch

1

のいずれかを必要とすべきではない私はかなり[path = r"%s" % directory]行はそれがコピーdirectorypathを作成

をやっていることを理解していない:

>>> directory = raw_input() 
LAS Data 
>>> path = r"%s" % directory 

>>> path == directory 
True 

>>> type(path), type(directory) 
(<type 'str'>, <type 'str'>) 

本当にwあなたはそれをどこから得たのか?かなり無意味なようだ。

+0

ありがとうございます。インターネットのコピー/貼り付けは、無駄な反復コードをたくさん作成することがあります – dbmitch

関連する問題