0

**更新 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')
4

2 に答える 2

-1
import os
import glob
import pandas as pd
import shutil

def process(folders):
    for f in folders:
        Target_Path     =   os.path.join(os.path.dirname('//fs/Unprocessed/{}/Edlog/Working/').format(folder))
        Move_Path       =   os.path.join(os.path.dirname('//fs/Unprocessed/{}/Edlog/ToProcess/').format(folder))
        Process_Path    =   os.path.join(os.path.dirname('//fs/Unprocessed/{}/Edlog/Processed/').format(folder))
        os.chdir(Target_Path)

        <Rest of our code>

fList = [261, 262, 278, 300]
process(fList)
于 2019-01-08T03:04:34.307 に答える