我正在编写一个py,以导入大量文件,对其进行处理,然后输出到.csv。在Pandas中这是蛋糕,但是我无法控制传入的文件,因此我试图编写脚本以使文件处理是否以“错误”方式出现异常。
无论如何,我正在使用“尝试/例外”向用户显示其中一个文件中存在KeyError(基本上,当数据类型为int时,单元格中有一个“”)。
我的问题是:有没有办法让例外:带回引起错误的文件的文件名?
for csv in csvList:
df = pd.read_csv(csv, header=0, skip_blank_lines=True, skipinitialspace=True)\
.dropna(how='all')
try:
df[0] = df[0].astype(int)
df[1] = df[1].astype(int)
df[2] = df[2].astype(int)
df[3] = df[3].astype(int)
report_path = 'UPC_Ready_for_Import'
if not os.path.exists(report_path):
os.makedirs(report_path)
df.to_csv(os.path.join(report_path, csv + '_import.csv'), index=False)
except KeyError:
print('Error within file, please review files')
答案 0 :(得分:4)
假设csvList
包含输入文件路径的列表:
for csv in csvList:
....
try:
...
except KeyError:
print('Error within file {}, please review files'.format(csv))
答案 1 :(得分:0)
我可以这样写:
for csv in csvList:
df = pd.read_csv(csv, header=0, skip_blank_lines=True, skipinitialspace=True)\
.dropna(how='all')
try:
df[0] = df[0].astype(int)
df[1] = df[1].astype(int)
df[2] = df[2].astype(int)
df[3] = df[3].astype(int)
report_path = 'UPC_Ready_for_Import'
if not os.path.exists(report_path):
os.makedirs(report_path)
file_name = os.path.join(report_path, csv + '_import.csv')
df.to_csv(file_name, index=False)
except KeyError:
print('Error within file', file_name ', please review files')
主要思想是将文件名存储在变量file_name中,并在except块中使用它。