2016-10-06 13 views
0

os.pathの使い方がわかりました。基本的に私がやろうとしているのは、ディレクトリをユーザーに尋ねることです。その後、ユーザーは文字(N)を入力し、ディレクトリ内のファイル名を入力すると、ディレクトリとファイルが結合されます。例えばos.path.joinを使用したパスの結合

C:\Desktop 

N hello 

Cなり製造された最終結果:\デスクトップ\こんにちは。

import os 
import os.path 
import shutil 
from pathlib import Path 

「: ディレクトリ=入力() search_files() にdirectory1 = search_characteristics(ディレクトリ) #print(にdirectory1)

私が間違って何をしているのですか?

+2

現在は失敗しており、それができると思うのはあなたが思うように行動していないということです。これにより、トラブルシューティングを絞り込むことができ、より迅速でより良い回答が得られます。 – idjaw

+0

@idjaw私は全体的なコードをゆっくりとやっていますが、Nがするべきことは です。入力の2行目が文字Nで始まる場合、特定の名前と正確に一致する名前のファイルが検索されます。 Nにはスペースが続く。スペースの後には、残りの行には検索対象のファイル名が表示されます。 今、パスを結合しようとすると、デスクトップのhello.txtで 'C:\ Desktop'と言うと、' C:\ Desktop \ helloではなく 'C:\ Desktop'のように表示されます'。 – accelerate

+0

ディレクトリを検索するには、[os.walk](https://docs.python.org/3/library/os.html#os.walk)のようなものを使用する必要があります。 – idjaw

答えて

0

ここでこれが有効です。

def search_characteristics(directory): 
    interesting = input() 
    interesting = interesting.split(" ") 
    if (interesting[0] == 'N'): 
     directory += (os.sep + interesting[1]) 
     print(directory) 
    elif interesting.startswith('E'): 
     return os.path.splitext(directory,'') 
    else: 
     print("Error") 
     return search_characteristics(directory) 

あなたは、あなたが持つos.sepと行を置き換えることができますos.path.join使用する必要がある場合:それがどのように、あなたはあなたの全体的なコードが行うことになっているかを説明することはでき

directory = os.path.join(directory, interesting[1]) 
+0

元の投稿を編集したところ、別の問題が発生しました。 'N hello'を置くと、 'C:\ Desktop \ hello 'と表示されますが、ファイルであれば' N doesntexist'というファイルが存在するかどうかを確認してください。 if isfileを追加してファイルであるかどうかを確認しましたが、ファイルであっても「ファイルではありません」と言っていました。 – accelerate

+0

あなたのコードを実行しようとしましたが、問題はありませんでした。あなたの入力には何を使用していますか? –

+0

コードは正常に動作しますが、間違った方法で動作していると感じています。実際にはファイルではなくディレクトリであるため、「ファイルではない」入力が出てきているように感じます。基本的に私は 'realfile.txt'という名前の実際のファイルと存在しないfakefileという名前のファイルを持っています。 私はコードを実行します。 'C:\ Desktop' N realfile.txtに入力し、' C:\ Desktop \ reaifile.txt'を返します。私は再びそれを実行し、N fakefile.txtを入れます。それは "ファイルではない"と言うべきです。私の現在のコードを実行すると、私は両方の "ファイルではない"を取得します。実際のファイルが「ファイルではない」エラーを出さないように、どうすれば修正できますか? – accelerate

関連する問題