我已经编写了将xlsx转换为csv的代码,然后将其内容写入CSD文件,作为CICS活动的一部分。
当我在pycharm中执行代码时,它的工作正常。我使用pyinstaller的--oneFile选项打包了python文件,并发布了我在执行.exe文件时遇到的错误。错误是:
ImportError:缺少必需的依赖项['numpy']
我尝试在pycharm中运行相同的代码,它工作正常。但是我需要将此文件作为exe交付给我们的一位客户
import csv
import sys
import os
import pandas as pd
def xls2csv (xls_filename, csv_filename):
global excelFile
df = pd.read_excel(xls_filename) # sheetname is optional
df.to_csv(csv_filename, index=False)
excelFile = 1
def detectDelimiter(csvFile):
with open(csvFile, 'r') as myCsvfile:
header=myCsvfile.readline()
if header.find(";")!=-1:
return ";"
if header.find(",")!=-1:
return ","
#default delimiter (MS Office export)
return ";"
def ReadFile(csvFileName):
global mydict
with open(csvFileName, mode='r') as infile:
reader = csv.reader(infile, delimiter=detectDelimiter(csvFileName))
mydict = {'DEFINE TRANSACTION(' + rows[0] + ') ' : 'PROGRAM(' + rows[1] + ')' for rows in reader}
#print(mydict)
def usage():
print(" Error in execution \n usage : cstvToCSD <PathOfinputCSV/XLS/XLSXFile> <PathOfOutputCSDFile>")
def WriteToCSDFile():
progress = "Writing to CSD ...."
with open(outFile, 'w') as f:
print(progress)
f.writelines('{}{}\n'.format(k, v) for k, v in mydict.items())
print("Finished writing CSD file ")
if __name__ == "__main__":
arguments = sys.argv[1:]
count = len(arguments)
excelFile=0
if count == 2:
fileName = arguments.__getitem__(0)
outFile = arguments.__getitem__(1)
if os.path.isfile(fileName) :
if str(fileName).endswith("xlsx") or str(fileName).endswith("xls"):
#print(" XLS FILE PATH = ",fileName)
csvFileName = str(fileName).replace(".xlsx",".csv").replace(".xls",".csv")
if os.path.exists(csvFileName):
os.remove(csvFileName)
if os.path.exists(outFile):
os.remove(outFile)
#print(" CSV FILE PATH = ", csvFileName)
xls2csv(fileName,csvFileName)
else:
csvFileName = fileName
ReadFile(csvFileName)
WriteToCSDFile()
if excelFile == 1:
#print("Ï AM HERE" )
os.remove(csvFileName)
else:
print("CSV/XLS/XLSX File doesnot exist or is not a file ")
usage()
else:
usage()