0

1 行のテキスト (コンピューター上の特定のフォルダーへのパス) を保存するだけの Python プログラムがあります。

私はそれをテキストファイルに保存し、そこから読み取るように機能しています。ただし、python ファイルが唯一のソリューションであることが望ましいと思います。

それで、私は尋ねます:新しいファイルを作成せずに、閉じた後でもPythonプログラムにテキストを保存する方法はありますか?

編集:私は py2exe を使用して、後でプログラムを .exe ファイルにします:おそらくファイルはそこに保存される可能性があるため、テキストファイルがないように見えますか?

4

3 に答える 3

4

ファイル名を Python スクリプトに保存し、必要に応じてスクリプト自体で変更できます。例えば:

import re,sys

savefile = "widget.txt"
x = input("Save file name?:")
lines = list(open(sys.argv[0]))
out = open(sys.argv[0],"w")
for line in lines:
    if re.match("^savefile",line):
        line = 'savefile = "' + x + '"\n'
    out.write(line)

このスクリプトは、自分自身をリストに読み込み、書き込みのために再び自分自身を開き、savefile設定されている行を修正します。スクリプトが実行されるたびに、 の値への変更はsavefile持続します。

この種の自己変更コードを良い習慣として必ずしも推奨するわけではありませんが、これはあなたが探しているものかもしれないと思います.

于 2013-07-15T01:29:43.993 に答える
2

あなたがやりたいことは、Windowsレジストリを使用して解決する方がよいようです-あなたがスクリプトからexeを作成すると述べたので、私はそれを想定しています。

次のスニペットは、レジストリから文字列を読み取ろうとし、見つからない場合 (プログラムの初回起動時など) は、この文字列を作成します。ファイルも混乱もありません...レジストリエントリが横たわっていることを除いて。コンピュータからソフトウェアを削除する場合は、レジストリからもキーを削除する必要があります。また、MyCompanyandMyProgramおよびMy String指定子をより意味のあるものに変更してください。

詳細については、Python _winreg APIを参照してください。

import _winreg as wr

key_location = r'Software\MyCompany\MyProgram'
try:
    key = wr.OpenKey(wr.HKEY_CURRENT_USER, key_location, 0, wr.KEY_ALL_ACCESS)
    value = wr.QueryValueEx(key, 'My String')
    print('Found value:', value)
except:
    print('Creating value.')
    key = wr.CreateKey(wr.HKEY_CURRENT_USER, key_location)
    wr.SetValueEx(key, 'My String', 0, wr.REG_SZ, 'This is what I want to save!')
wr.CloseKey(key)

_winregこのモジュールはwinregPython 3で呼び出されることに注意してください。

于 2013-07-15T03:05:45.507 に答える
0

コードの先頭に入れてみませんか。たとえば、コードを開始します。

import ... #import statements should always go first

path = 'what you want to save'

これで、パスが文字列として保存されました

于 2013-07-15T01:20:34.647 に答える