2016-04-26 24 views
2

私はPython3.4でソフトウェアを開発しました。このソフトウェアは入力として変数のセットを持つ設定ファイルを持ち、その一部はパスです。Pythonは、Windowsエクスプローラからパスファイルをコピーして変数にコピーします。

ファイルパス名にセパレータに問題があります。 文字列の前に "r"を付けるか、二重バックスラッシュまたはスラッシュを使用して生の文字列を使用することができますが、このソフトウェアは他のユーザーによって使用され、平均的なものは単なる "コピー"私は彼らがファイル名を操作しないようにしています。

ので、ユーザーは、ちょうどWindowsのエクスプローラからファイルパスをコピーして、設定ファイルに貼り付けるようなものがあります:

path_variable = "C:\Users\home\room\table.txt" 

を、私はそれがそのように使用することができます修正する機能を書きたいです。

どうすればいいですか?私は

更新 ...ので\ Uの私は、Unicodeのエラーを取得し、このように

どうもありがとう、

Ciccioの

を文字列のままにすると、設定ファイルではありませんPythonファイルですが、変数とその値の中の.txtファイル:

var_name = var_val 
path_variable = "C:\Users\home\room\table.txt" 
height = 20 
plot_write_variable = ["y", "n"] 

これは単なる一時的な解決策ですGUIを完成させるまで。このファイルは本当に理解しやすいものでなければならず、人々はPythonやプログラミングに関する知識を持っていないので、ソフトウェアを使用しなければなりません。最終的なユーザーは、変数の値を変更し、実行可能ファイルをクリックしてプログラムを実行するだけです。このため、できるだけ多くのPythonコマンドを使わないようにしたい。あなたの設定ファイルは、Pythonで書かれている必要はありません

import imp 
def read_inputFile(path): 
    file = open(path) 
    variables = imp.load_source('data', '', file) 
    file.close() 
    return variables 

答えて

0

:私はこの機能を使用する設定ファイルを読み込むために

configparserを使うことができます。これまでのところ、バックスラッシュを特別に解釈していないと言えます。

これにより、コンフィグファイルのロジックが若干変更されることがあります。 configファイルをimportステートメントで直接インポートするのではなく、configparserモジュールで解析します。また、configparserが期待しているものと一致するように、設定ファイルの構文を調整する必要があるかもしれません。

+0

答えに感謝します。私は少し明確にするために私の質問を更新しました。私は 'configparser'のアイデアが気に入っていますが、あなたが言うように、構文をちょっと調整しなければなりません。それを回避する方法はありますか?それ以外の場合は 'configparser'に移動します。 – cicciodevoto

+0

@cicciodevoto:あなたの設定ファイルは* Pythonファイルです。そうでなければ、 'imp'はそれを読み込めません。 Pythonの複雑さが気に入らなければ、それを使わないでください。 – Kevin

+0

はい、あなたは間違いなく、Pythonファイルです。アドバイスをいただきありがとうございます。 – cicciodevoto

0

あなたは、ユーザーが「コピー&ペースト」していると言いますが、ファイルの場所を設定ファイルに貼り付ける必要があります。私はあなたのコードを知らないが、設定ファイルはPythonであれば、あなたは行追加することができます。

path_variable = input("Enter the path").replace("\\", "\\\\") 

Pythonは\として\\を解釈し、これは、それらの問題を解決

あなたの問題を修正しますコピーしてファイルに貼り付け、代わりにファイルパスを要求します。

+0

答えをありがとう、これはよりインタラクティブなスクリプトを持っている素晴らしいソリューションです、私は未来を念頭に置いていますが、実際に私が今必要なものではありません。質問をもっと明確に更新しました。 – cicciodevoto

関連する問題