Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除python路径硬代码和传递列表_Python_Python Requests_Os.walk_Pathlib - Fatal编程技术网

删除python路径硬代码和传递列表

删除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位数的标识符例外,我想创建一个可以从中

**更新日期:美国东部时间2019年8月1日0945

我已经通过Bhakta007给出的函数传递了脚本,但收到一个路径错误“系统无法找到指定的路径:”

在回顾之后,我在脚本的末尾添加了下面的语句,以便通过函数传递列表,代码也可以正常工作

对于fList中的f: excel\u 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')
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,它就能够找到路径。