2016-12-21 14 views
0

以下では、ファイル内のテキストを検索する簡単なスクリプトを見つけることができます。私はより多くのクロスプラットホームになる方法を探しています。私はすべてのディレクトリを調べ、Pythonの標準ライブラリを使ってパス内の '\'を避ける方法を意味します。私が知っているので、Macはバックスラッシュの代わりに '/'を使います。どのようにそれを行うにはどのようなアイデア?パスのバックスラッシュを避けるPython

#!/usr/bin/env python  

def find(text, search_path): 
    res = [] 

    for subdir, dirs, files in os.walk(search_path): 
     for fname in files: 
      if os.path.isfile(subdir + "\\" + fname): 
       with open(subdir + "\\" + fname) as f: 
        for i, line in enumerate(f): 
         if text in line: 
          res.append([fname, i]) 
+0

check 'os.path.join' –

+0

' os.path.join'は正しい解決策ですが、Windowsは '/'ディレクトリ区切り文字に完全に満足しています。 – kindall

+0

明らかに答えます。ありがとうございました! –

答えて

2

あなたがos.sepを使用することができ、あなたが

os.path.join(subdir, fname) 
0

を行うことができ

subdir + "\\" + fname 

するのではなく、たとえば のために、一緒にパスを結合するためにos.path.joinを使用することができます。これは、実際には、必要に応じてパス名の構成要素を区切るためにオペレーティングシステムが使用する文字を得ることができることを示していますが、パス名を連結するには、os.path.join()を使用して他の答えを参照してください。

オペレーティングシステムがパス名の構成要素を区切るために使用する文字。 POSIXの場合は'/'、Windowsの場合は'\\'です。これを知ることは、パス名を解析したり連結したりするには不十分であることに注意してください。os.path.split()os.path.join()を使用してください。しかし時には便利です。 os.pathでも利用可能です。

関連する問題