2016-10-02 4 views
0

os.pathとpathlibを正しく使用する方法が不思議でした。私はディレクトリ(私がすでに行ったもの)を検索し、その後に文字とスペースを入力し、それが何をするかを決めるでしょう。このためpathlib/os.pathなどを正しく使用する

def search_files(): 
    directory = input() 
    exist = Path(directory) 
    if exist.exists(): 
     return directory 
    else: 
     print("Error") 
     print("Try again: ") 
     return search_files() 





def search_characteristics(directory): 
    interesting = input() 
    exist = os.path.exists(directory) 
    if interesting[0] == 'N': 
     return os.path.join(directory, interesting) 
    else: 
     print("Error") 
     return search_characteristics() 



if __name__ == '__main__': 
    directory = input() 
    search_files() 
    search_characteristics(directory) 

pathlibインポートパスから shutil

輸入OS 輸入はos.path インポートあなたが見ることができるように、search_filesは働くディレクトリを探します。 次の部分は私が混乱している部分です。基本的には、C:\ Program Filesなどのディレクトリを検索した後、新しい行にNを入力して、ディレクトリで必要なものを検索します。

は、Nは、ファイルの正確な名前を探します

C:\Users\Desktop\stuff

N something.txt

のように言います。

正しくやっていますか、それとも別の方法がありますか?

+0

'search_files'は正しく動作しません! 'Path'オブジェクトに関するメソッドを使用して、そのことを発見する必要があります。だから 'if exist:'の代わりに、 'Path'オブジェクトのために常に' True'です。if exist.exists(): 'を実行します。 – tdelaney

+0

'os.path.join(directory)'はあまり面白いことではありません。複数のパスコンポーネントを結合する場合にのみ使用してください。 – tdelaney

+0

exist.existsに変更しましたが、> directory = os.path.join(ディレクトリ)と同じエラーが発生しています UnboundLocalError:ローカル変数 'directory'が割り当て前に参照されています – accelerate

答えて

0

このスクリプトは、あなたが望むことをします。次の呼び出しでディレクトリ検索機能の結果を使用するのと並んで、私はまた、.startswithを使用するように比較を変更し、emtpy文字列応答がプログラムをクラッシュさせないようにしました。

import os 
from pathlib import * 

def search_files(): 
    directory = input() 
    exist = Path(directory) 
    if exist.exists(): 
     return directory 
    else: 
     print("Error") 
     print("Try again: ") 
     return search_files() 


def search_characteristics(directory): 
    interesting = input() 
    exist = os.path.exists(directory) 
    if interesting.startswith('N'): 
     return os.path.join(directory, interesting) 
    else: 
     print("Error") 
     return search_characteristics(directory) 

if __name__ == '__main__': 
    directory = search_files() 
    fn = search_characteristics(directory) 
    print(fn) 
+0

私はあなたのコードについて何か気づいた。私が立ち入り、ディレクトリに入ったら、N と入力すると、ディレクトリ/ N が表示されます。また、ファイル名の後に数字を入力するとエラーになることに気付きました。私はディレクトリにも実際のファイルを持っています。 – accelerate

+0

これは存在しないファイルも表示しています。 – accelerate

+0

この時点で、いくつかのプリントを散らばり、文字列と何が欲しいかを比較することができます。私はNを名前の一部として欲しがっているかどうか分からなかったので、それを保存しました。Nをスキップするために 'os.path.join(ディレクトリ、面白い[1:])'を実行できました。 – tdelaney

関連する問題