如何将我的输出 xls 文件发送到 python 中的特定路径?
How do I send my output xls files to a specific path in python?
如何让我的 df.to_excel 函数写入输出路径?在我的脚本运行后,我没有看到我定义的 output_path 目录中的文件。
import pandas as pd
from openpyxl import load_workbook
import os
import datetime
output_path = 'C:/Users/g/Desktop/autotranscribe/python/Processed'
path = 'C:/Users/g/Desktop/autotranscribe/python/Matching'
cols_to_drop = ['PSI ID','PSIvet Region','PSIvet region num','Fax','County']
column_name_update_map = {'Account name': 'Company Name','Billing address':'Address','Billing city':'City','Billing State':'State'}
for file in os.listdir("C:/Users/g/Desktop/autotranscribe/python/Matching"):
if file.startswith("PSI") and "(updated headers)" not in file:
dfs = pd.read_excel(file, sheet_name=None,skiprows=5)
output = dict()
for ws, df in dfs.items():
if ws.startswith("Cancelled Members"): df = df.drop('Active date', axis=1)
if any(ws.startswith(x) for x in ["New Members","PVCC"]):
continue
#if ws in ["New Members 03.22","PVCC"]: #sheetstoavoid
temp = df
dt = pd.to_datetime(os.path.getctime(os.path.join(path,file)),unit="s").replace(nanosecond=0)
output[ws] = temp
writer = pd.ExcelWriter(f'{file.replace(".xlsx","")} (updated headers).xlsx')
for ws, df in output.items():
df.to_excel(writer, index=None, sheet_name=ws)
writer.save()
writer.close()
我试过了df.to_excel(writer,output_path, index=None, sheet_name=ws)
但是我得到一个错误
文件“”,第 36 行,位于
df.to_excel(writer,output_path, index=None, sheet_name=ws)
TypeError: to_excel() 得到了参数 'sheet_name' 的多个值。
几点评论:
- 函数
os.listdir()
仅 returns “不合格”文件名,因此在使用 file
之前,我们需要使用 input_file_name = f'{path}/{file}'
之类的前缀 path
.
- 同样,
pd.ExcelWriter()
需要一个合格的文件名(即,包括路径以及“不合格”的文件名),我们可以通过这样做得到:output_file_name = f'{output_path}/{file.replace(".xlsx","")} (updated headers).xlsx'
。
- 您问题中的代码中有一些元素可能没有被使用,但我没有评论或更改这些元素,而是在下面提供了一个经过最小更改的工作版本。
我创建了名为 Matching
和 Processed
的目录。我在 Matching
中放置了一个名为 PSI 123.xlsx
的文件,其中包含一个名为 Cancelled Members
的选项卡,其中包含以下内容:
will skip
will skip
will skip
will skip
will skip
Col1 Col2 Col3 Active date
xx NY 110 789
然后我 运行 对您的代码进行了以下修改(请注意对 output_path
和 path
的更改,以便在我的环境中进行测试):
import pandas as pd
from openpyxl import load_workbook
import os
import datetime
#output_path = 'C:/Users/g/Desktop/autotranscribe/python/Processed'
#path = 'C:/Users/g/Desktop/autotranscribe/python/Matching'
output_path = './Processed'
path = './Matching'
cols_to_drop = ['PSI ID','PSIvet Region','PSIvet region num','Fax','County']
column_name_update_map = {'Account name': 'Company Name','Billing address':'Address','Billing city':'City','Billing State':'State'}
for file in os.listdir(path):
if file.startswith("PSI") and "(updated headers)" not in file:
input_file_name = f'{path}/{file}'
dfs = pd.read_excel(input_file_name, sheet_name=None,skiprows=5)
output = dict()
for ws, df in dfs.items():
if ws.startswith("Cancelled Members") and 'Active date' in df.columns: df = df.drop('Active date', axis=1)
if any(ws.startswith(x) for x in ["New Members","PVCC"]):
continue
#if ws in ["New Members 03.22","PVCC"]: #sheetstoavoid
temp = df
dt = pd.to_datetime(os.path.getctime(os.path.join(path,file)),unit="s").replace(nanosecond=0)
output[ws] = temp
output_file_name = f'{output_path}/{file.replace(".xlsx","")} (updated headers).xlsx'
writer = pd.ExcelWriter(output_file_name)
for ws, df in output.items():
df.to_excel(writer, index=None, sheet_name=ws)
writer.save()
writer.close()
在 运行 之后,代码在 Processed
中创建了一个名为 PSI 123 (updated headers).xlsx
的新文件,其中 sheets 在输入中命名。 sheet Cancelled Members
包含以下内容:
Address State Zip Status Status.1 Date Partner
Col1 Col2 Col3
xx NY 110
如何让我的 df.to_excel 函数写入输出路径?在我的脚本运行后,我没有看到我定义的 output_path 目录中的文件。
import pandas as pd
from openpyxl import load_workbook
import os
import datetime
output_path = 'C:/Users/g/Desktop/autotranscribe/python/Processed'
path = 'C:/Users/g/Desktop/autotranscribe/python/Matching'
cols_to_drop = ['PSI ID','PSIvet Region','PSIvet region num','Fax','County']
column_name_update_map = {'Account name': 'Company Name','Billing address':'Address','Billing city':'City','Billing State':'State'}
for file in os.listdir("C:/Users/g/Desktop/autotranscribe/python/Matching"):
if file.startswith("PSI") and "(updated headers)" not in file:
dfs = pd.read_excel(file, sheet_name=None,skiprows=5)
output = dict()
for ws, df in dfs.items():
if ws.startswith("Cancelled Members"): df = df.drop('Active date', axis=1)
if any(ws.startswith(x) for x in ["New Members","PVCC"]):
continue
#if ws in ["New Members 03.22","PVCC"]: #sheetstoavoid
temp = df
dt = pd.to_datetime(os.path.getctime(os.path.join(path,file)),unit="s").replace(nanosecond=0)
output[ws] = temp
writer = pd.ExcelWriter(f'{file.replace(".xlsx","")} (updated headers).xlsx')
for ws, df in output.items():
df.to_excel(writer, index=None, sheet_name=ws)
writer.save()
writer.close()
我试过了df.to_excel(writer,output_path, index=None, sheet_name=ws)
但是我得到一个错误 文件“”,第 36 行,位于 df.to_excel(writer,output_path, index=None, sheet_name=ws)
TypeError: to_excel() 得到了参数 'sheet_name' 的多个值。
几点评论:
- 函数
os.listdir()
仅 returns “不合格”文件名,因此在使用file
之前,我们需要使用input_file_name = f'{path}/{file}'
之类的前缀path
. - 同样,
pd.ExcelWriter()
需要一个合格的文件名(即,包括路径以及“不合格”的文件名),我们可以通过这样做得到:output_file_name = f'{output_path}/{file.replace(".xlsx","")} (updated headers).xlsx'
。 - 您问题中的代码中有一些元素可能没有被使用,但我没有评论或更改这些元素,而是在下面提供了一个经过最小更改的工作版本。
我创建了名为 Matching
和 Processed
的目录。我在 Matching
中放置了一个名为 PSI 123.xlsx
的文件,其中包含一个名为 Cancelled Members
的选项卡,其中包含以下内容:
will skip
will skip
will skip
will skip
will skip
Col1 Col2 Col3 Active date
xx NY 110 789
然后我 运行 对您的代码进行了以下修改(请注意对 output_path
和 path
的更改,以便在我的环境中进行测试):
import pandas as pd
from openpyxl import load_workbook
import os
import datetime
#output_path = 'C:/Users/g/Desktop/autotranscribe/python/Processed'
#path = 'C:/Users/g/Desktop/autotranscribe/python/Matching'
output_path = './Processed'
path = './Matching'
cols_to_drop = ['PSI ID','PSIvet Region','PSIvet region num','Fax','County']
column_name_update_map = {'Account name': 'Company Name','Billing address':'Address','Billing city':'City','Billing State':'State'}
for file in os.listdir(path):
if file.startswith("PSI") and "(updated headers)" not in file:
input_file_name = f'{path}/{file}'
dfs = pd.read_excel(input_file_name, sheet_name=None,skiprows=5)
output = dict()
for ws, df in dfs.items():
if ws.startswith("Cancelled Members") and 'Active date' in df.columns: df = df.drop('Active date', axis=1)
if any(ws.startswith(x) for x in ["New Members","PVCC"]):
continue
#if ws in ["New Members 03.22","PVCC"]: #sheetstoavoid
temp = df
dt = pd.to_datetime(os.path.getctime(os.path.join(path,file)),unit="s").replace(nanosecond=0)
output[ws] = temp
output_file_name = f'{output_path}/{file.replace(".xlsx","")} (updated headers).xlsx'
writer = pd.ExcelWriter(output_file_name)
for ws, df in output.items():
df.to_excel(writer, index=None, sheet_name=ws)
writer.save()
writer.close()
在 运行 之后,代码在 Processed
中创建了一个名为 PSI 123 (updated headers).xlsx
的新文件,其中 sheets 在输入中命名。 sheet Cancelled Members
包含以下内容:
Address State Zip Status Status.1 Date Partner
Col1 Col2 Col3
xx NY 110