2016-07-01 4 views
1

Firefoxの埋め込みsqlite3を使用してfirefoxプロファイルのcookies.sqliteにアクセスしようとしています。FirefoxのSqliteバージョン40.0

>>> import sqlite3 
>>> conn = sqlite3.connect(COOKIES_FILEPATH) 

* COOKIES_FILEPATHは実際のファイルパスに置き換えられます。

上記のスクリプトを実行すると、次のエラーが発生しています。

sqlite3.OperationalError: unable to open database file 

Firefoxの40.0はSqliteを以前のバージョンを使用するか、Firefoxのプロファイルからcookies.sqliteの使用に関するいくつかの制限があるので、それです。

私は再帰的にプロファイルを保持するディレクトリにすべての許可(777)を与えました。

誰かがなぜこのようなことが起こっているのか詳しく説明できますか?

+0

「COOKIES_FILEPATH」は正しいファイルパスですか? –

+0

私は、プロファイルフォルダの内容をデスクトップのフォルダ名プロファイルにコピーしました。 "〜/ Desktop/Profile/cookies.sqlite"というパスを使用しています。 – Amriteya

+1

Pythonはパスで '〜'を展開しません。明示的に展開するには 'os.path.expanduser()'を使用してください。 –

答えて

1

SQLiteは下位互換性を維持する優れた実績があり、データベースファイルに問題があった場合、エラーメッセージに反映されます。

エラーは、パスが間違っていることを示します。存在することが確認されたファイルへの絶対パスがあることを確認してください。あなたは後者を行うにはPythonを使用することができます。

os.isfile(COOKIES_FILEPATH) 

それは相対的なものであるか、環境変数(os.path.expandvars())または~参照(os.path.expanduser())が含まれている場合、あなたのパスが絶対的にするためにos.path moduleを使用します。あなたのシェルはこれらを拡張するかもしれませんが、Pythonは明示的に指示されない限りそうしません。

関連する問題