2016-08-30 14 views
0

プログラムは、読み込まれるファイル名と処理されたデータを書き込むファイルをユーザに尋ねるとします。現在の作業ディレクトリにないファイルをインポートする

プログラムが現在のディレクトリを変更するために、必要なファイルのディレクトリを取得する方法はありますか?または、そのファイルにアクセスする別の方法がありますか?

+0

ディレクトリを取得する唯一の方法は、ユーザーにファイル名だけでなく完全なディレクトリパスを入力するように求めることです。このプログラムは、ファイルがどのディレクトリにあるかを魔法のように知ることはできません。 –

+0

助けてくれてありがとう! –

+0

モジュールをインポートするか、ファイルを読み込んでいるのですか?それらは非常に異なるものです。 –

答えて

0

ディレクトリで完全なファイルパスを入力した場合は、sys.pathを使用して解析し、次にos.chdir()を解析できます。

+1

ユーザが完全なパスを入力した場合、なぜそれをまったく解析する必要がありますか?その上で 'open()'を呼び出すだけです! –

0

Tkinterを使用すると、ファイルアップロードボックスで入力するのではなく、入力を促すことができます。ファイルを選択すると、完全なファイルパスが得られます。

from tkinter import filedialog 

# this gives you the full file path 
filepath = askopenfilename() 

print filepath 
# or do whatever you want with the file path 

は、完全なファイルパスを入力することをユーザーに尋ねること(everyonesのではなく言及していないファイルパスの構文を知っている)問題が発生しますが、個人的な経験からではない、誰もがあなたが好きな入力を与えるだろうことを言っていませんこの例ではエラーマージンが減少します。

0

Welp、これは私の最初の答えなので、うまくいけば質問を誤解せず、悪いスタートを切ることはありません。ここには何も行きません...

これまでのコメントや回答よりも、 "portable" ways to "ask" for a path relative to your current working directoryがあるが、そのような設計選択は、特にユーザが何が起こっていると思われるかに関しては明白ではない。これがすべての裏ファイル操作であった場合、それは一つのことですが、この場合、私は、他の人と同様に、読み書きファイルへのパス全体を尋ねることをお勧めします。完全を期すために、あなたはこれで始めることができます:あなたが完了したら、コンテキストマネージャ(with)が自動的にファイルをクローズすることを

# responses should be of the form 
# full/path/from/home/directory/to/file/my_read_and_write_files.txt 
fileToReadPath = input("Provide the full path to your read file: ") 
fileToWritePath = input("Provide the full path to your write file: ") 

with open(fileToReadPath, 'r') as readFile, open(fileToWritePath, 'w') as writeFile: 
    # do stuff with your files here! 
    # e.g. copy line by line from readFile to writeFile 
    for line in readFile: 
     writeFile.write(line) 

は注意してください。このような単純なものについては、上記のリンク、this section on the os modulethis section on the IO itselfのpythonドキュメントは、あなたのオプションとおもちゃの例を説明するのに非常に良い仕事だと思います。

関連する問題