2

私のプロジェクトには、ユーザー入力に基づいて呼び出される場合と呼び出されない場合がある一連の csv ファイルがあります。これらのファイルをサブディレクトリに保存して、プロジェクト フォルダーを整理したいと考えています。これを行う方法について、私は完全に混乱しています。私が掘り下げたリソースのほとんどは、基本的なデータ ファイルではなく、サブディレクトリからモジュールまたはパッケージをインポートすることに関するものです。

現在、csv をインポートするコード行は次のようになっています。

target_doc = csv.reader(open('sample.csv', 'rU'), delimiter=",", quotechar='|')

import os と import sys を使用してパス変数を設定し、おそらくこの行を複数の部分に分割することで解決できると思いますか?

4

4 に答える 4

8

ファイルパスでファイルを開くことができます。を使用するだけopen('/path/to/file')です。

インポートは、モジュールとパッケージ (Python ソース コード) にのみ必要です。

ここでの唯一の実際の注意点は、os.path.join()異なるオペレーティング システムやファイル システム間で良好な互換性を確保するためにパスを結合する場所を使用することです。モジュールの残りの部分os.pathも、ファイルが関係していれば一見の価値があります。Windows パスのもう 1 つの一般的なトラップは、バックスラッシュを使用してエスケープ文字を使用することです。そのため、バックスラッシュ ( "some\\file") をエスケープする必要があります - 見苦しいオプション、生の文字列 ( r"some\file") を使用する、スラッシュを使用する (Python は実際にこれを自動的に処理します)、または - 最良のオプションです。パスを引数として前述の に渡しますos.path.join()

ステートメントを使用するwithとコードが改善されることにも注意してください。

例えば:

with open(os.path.join("path", "to", "file.csv"), 'rU') as file:
    target_doc = csv.reader(file, delimiter=",", quotechar='|')
    ...

を使用withすると、例外が発生した場合でも、ファイルが確実に閉じられます。

于 2012-04-19T19:55:59.467 に答える
1

あなたは間違った道を進んでいます。Python パスとインポートは、他の Python コードをシステムに「リンク」するためだけのものです。システムがリソースとして使用するその他のファイルには、ファイルのフル パスを指定してアクセスします。

 target_doc = csv.reader(open('/resources/csv_files/sample.csv', 'rU'), delimiter=",", quotechar='|')

または、python ファイルを実行している場所からの相対パス:

 target_doc = csv.reader(open('csv_files/sample.csv', 'rU'), delimiter=",", quotechar='|')
于 2012-04-19T20:01:50.307 に答える
1

使用できます

import os
cwd = os.path.dirname(__file__) # get current location of script

次に、 os.path.join(cwd, 'some/../path') を使用して、好きな場所への絶対パスを作成します。そのため、Python インタープリターの現在の作業ディレクトリに関係なく、パスはスクリプトの場所に対してのみ相対的です。UNIX の '/' 規則に依存したくない場合は、Mai も os.sep を使用します。

于 2012-04-19T19:59:04.073 に答える