删除python路径硬代码和传递列表
**更新日期:美国东部时间2019年8月1日0945 我已经通过Bhakta007给出的函数传递了脚本,但收到一个路径错误“系统无法找到指定的路径:” 在回顾之后,我在脚本的末尾添加了下面的语句,以便通过函数传递列表,代码也可以正常工作 对于fList中的f: excel\u csv(fList) 我对下面的问题补充了一个答案 我有一个小脚本,可以运行它将excel文件转换为.csv。目前,我必须用硬编码的路径重复脚本。当前路径具有完全相同的结构,只有一个3位数的标识符例外,我想创建一个可以从中调用的列表。下面是我的代码。你会看到我有一些有路径的变量,我在需要的地方传递这些变量。我研究了os.path、glob和pathlib,但是我找不到解决这个问题的好方法 原始代码删除python路径硬代码和传递列表,python,python-requests,os.walk,pathlib,Python,Python Requests,Os.walk,Pathlib,**更新日期:美国东部时间2019年8月1日0945 我已经通过Bhakta007给出的函数传递了脚本,但收到一个路径错误“系统无法找到指定的路径:” 在回顾之后,我在脚本的末尾添加了下面的语句,以便通过函数传递列表,代码也可以正常工作 对于fList中的f: excel\u csv(fList) 我对下面的问题补充了一个答案 我有一个小脚本,可以运行它将excel文件转换为.csv。目前,我必须用硬编码的路径重复脚本。当前路径具有完全相同的结构,只有一个3位数的标识符例外,我想创建一个可以从中
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')
import os
import glob
import pandas as pd
import shutil
def excel_csv(facility):
for f in facility:
Target_Path = os.path.join(os.path.dirname(f'//fs/Unprocessed/{facility}/Edlog/Working/'))
Move_Path = os.path.join(os.path.dirname(f'//fs/Unprocessed/{facility}/Edlog/ToProcess/'))
Process_Path = os.path.join(os.path.dirname(f'//fs/Unprocessed/{facility}/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')
fList = ['261', '262', '278', '300']
for f in fList:
excel_csv(fList)
导入操作系统
导入glob
作为pd进口熊猫
进口舒蒂尔
def流程(文件夹):
对于文件夹中的f:
Target_Path=os.Path.join(os.Path.dirname('//fs/Unprocessed/{}/Edlog/Working/')。格式(文件夹))
Move_Path=os.Path.join(os.Path.dirname('//fs/Unprocessed/{}/Edlog/ToProcess/')。格式(文件夹))
Process_Path=os.Path.join(os.Path.dirname('//fs/Unprocessed/{}/Edlog/Processed/')。格式(文件夹))
os.chdir(目标路径)
fList=[261262278300]
过程(fList)
我使用了从Bhakta007创建的函数,但收到“系统无法找到指定的路径:”错误
-增加的修订-
我在脚本末尾添加了一个“For”子句,并通过函数传递了列表,并且能够在所有目录中成功运行脚本
我还为“Facility”使用了一个fstring,而不是.format(Facility)
下面是工作代码
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')
import os
import glob
import pandas as pd
import shutil
def excel_csv(facility):
for f in facility:
Target_Path = os.path.join(os.path.dirname(f'//fs/Unprocessed/{facility}/Edlog/Working/'))
Move_Path = os.path.join(os.path.dirname(f'//fs/Unprocessed/{facility}/Edlog/ToProcess/'))
Process_Path = os.path.join(os.path.dirname(f'//fs/Unprocessed/{facility}/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')
fList = ['261', '262', '278', '300']
for f in fList:
excel_csv(fList)
谢谢,我实现了此更改,但收到错误“系统找不到指定的路径:'//fs/Unprocessed/[776]/Edlog/Working'。如果我在函数外使用相同的代码并以该格式传递(文件夹),或者使用Fstring,它就能够找到路径。