pythonプログラムをexe化するときのファイルpathをどうすればいいか?
解決したいこと
csvファイルを分割するプログラムをpythonで作成し、想定通り動作できました。ただ、その後、pyinstallerでexe化もできたのですが、exeファイルを実行すると、思ったとおり、FileNotFoundError:になります。csvファイルをドラッグして実行するにはどうしたらよいか教えていただけないでしょうか?
発生している問題・エラー
FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\sugi\AppData\Local\Temp\_MEI123162\input.csv'
該当するソースコード
言語名 python
ソースコードを入力
import csv
import os
def split_csv(input_file):
# プログラムファイルのディレクトリを取得
current_directory = os.path.dirname(os.path.abspath(__file__))
# 入力ファイルのパスを生成
input_file_path = os.path.join(current_directory, input_file)
# CSVファイルを読み込む
with open(input_file_path, 'r', encoding='utf-8') as file:
reader = csv.reader(file)
header = next(reader) # ヘッダーを取得
data = [row for row in reader]
# 2列目のデータごとに分割
grouped = {}
for row in data:
key = row[1] # 2列目のデータをキーとして使用
if key not in grouped:
grouped[key] = []
grouped[key].append(row)
# 出力ディレクトリを作成
output_dir = os.path.join(current_directory, 'output')
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# データを分割してCSVファイルとして保存
for key, rows in grouped.items():
output_file = os.path.join(output_dir, f"{key}.csv")
with open(output_file, 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(header) # ヘッダーを書き込む
writer.writerows(rows)
print(f"分割されたファイル: {output_file}")
if name == "main":
# 入力ファイルのファイル名を指定して実行
input_file_name = 'input.csv'
split_csv(input_file_name)
自分で試したこと
csvファイルのpathをどうにかすればいいのではと思うのですが、知識不足で分かりません。