**更新 2019 年 1 月 8 日 0945 EST
bhakta0007 によって指定された関数を介してスクリプトを渡しましたが、「指定されたパスが見つかりません:」というパス エラーを受け取りました。
レビュー後、スクリプトの最後に以下のステートメントを追加して、関数を介してリストを渡すと、コードが機能します。
fList の f の場合: excel_csv(fList)
以下の質問に回答を追加しました。
Excel ファイルを .csv に変換するために実行する小さなスクリプトがあります。現在、ハードコードされたパスを使用してスクリプトを繰り返す必要があります。現在のパスは、呼び出すことができるリストを作成したい 3 桁の識別子を除いて、まったく同じ構造を持っています。以下は私のコードです。パスを持つ変数があり、これらの変数を必要な場所に渡していることがわかります。os.path、glob、および pathlib を調べましたが、問題の適切な解決策が見つかりません。
オリジナルコード
import os
import glob
import pandas as pd
import shutil
Target_Path = os.path.join(os.path.dirname('//fs/Unprocessed/261/Edlog/Working/'))
Move_Path = os.path.join(os.path.dirname('//fs/Unprocessed/261/Edlog/ToProcess/'))
Process_Path = os.path.join(os.path.dirname('//fs/Unprocessed/261/Edlog/Processed/'))
os.chdir(Target_Path)
try:
for f in glob.glob('*.xls'):
out = f.split('.')[0]+'.csv'
df = pd.read_excel(f,)
df.to_csv(out, index=False)
finally:
for f in glob.glob('*.xlsx'):
out = f.split('.')[0]+'.csv'
df = pd.read_excel(f,)
df.to_csv(out, index=False)
xlsCounter = len(glob.glob1(Target_Path,"*.xls"))
xlsxCounter = len(glob.glob1(Target_Path,"*.xlsx"))
csvcounter = len(glob.glob1(Target_Path,"*.csv"))
if csvcounter == xlsCounter + xlsxCounter :
print('Complete Convert')
else:
print('Failed Convert')
for files in glob.glob('*.csv'):
shutil.move(files, Move_Path)
for files in glob.glob('*.xls'):
shutil.move(files, Process_Path)
for files in glob.glob('*.xlsx'):
shutil.move(files, Process_Path)
if len(os.listdir(Target_Path) ) == 0:
print('Complete Move')
else:
print('Failed Move')