0

現在、.csv ファイルのデータからグラフを作成するコードを作成しました。ただし、そのコードがcsvファイルのあるフォルダーに存在する場合にのみ、コードを実行できます。.csv ファイルと同じディレクトリにある必要がないように、スクリプト ファイルを作成するにはどうすればよいですか。また、同じスクリプトで他のディレクトリ内のすべての csv ファイルを読み取るようにしたいと考えています。

以下のコードが間違っているのはなぜですか?

Here=os.path.dirname(os.path.abspath(__file__))
directory = "path of directory"
listing = os.listdir(directory)
for files in listing:
    if files.endswith('.csv'):  
    full_name = os.path.join(Here,files)
    df=pd.read_csv(full_name)
4

4 に答える 4

1

設定するだけdirectory="/path/to/fldr/with/csv"

full_name = os.path.join(directory,files)

于 2013-07-24T17:13:29.630 に答える
0

必要なパスを変数「Here」に割り当てていますが、空の文字列変数「directory」を作成し、それを使用してリストを提供しています。ディレクトリ "" 内のファイルのみを検索しているため、リストにはベース フォルダー (コードがある場所) 内のファイルのみが含まれます。あなたが意図しているのは、「ここ」を使用してリストを作成することだと思います

directory = Here
于 2013-07-24T17:15:20.653 に答える
0

はい、違います。CSV ファイルの場所をスクリプトに指示する引数を受け入れる必要があります。

import argparse

def import_function(sourcedir):
    for filename in os.listdir(sourcedir):
        csvfilename = os.path.join(sourcedir, filename)
        with open(csvfilename) as csvfile:
            reader = csv.reader(csvfile)
            for row in reader:
                # etc.    

if __name__ == '__main__':
    parser = argparse.ArgumentParser('CSV importer')
    parser.add_argument('sourcedir', default='.')
    options = parser.parse_args()
    import_function(options.sourcedir)

これで、スクリプトは 1 つのコマンドライン引数 (ファイルを一覧表示するディレクトリへのパス) を受け入れます。

python yourscript.py /path/to/directory

デフォルトでは、現在のディレクトリを引き続き検索します。

于 2013-07-24T17:13:41.470 に答える
0

空のディレクトリ ( directory = '') をリストしています。

現在のディレクトリを取得するには、os.getcwd().

操作するディレクトリを指定する際に何が問題なのかわかりません。コマンド ライン パラメータを使用して実行できます (「参考文献」をsys.argv参照)。

于 2013-07-24T17:14:11.547 に答える