在不提供目录路径的情况下读取CSV文件不起作用

时间:2018-02-12 09:57:12

标签: python-3.x csv path pyinstaller reader

def readcsv(myfile):
    myfile_o = open(myfile, "rU")
    reader = csv.reader(myfile_o, delimiter=",")

def csvmain():
    readcsv('/Users/madrad/Dnl/Hei/demand.csv')

csvmain()

为什么我需要指定传递给函数的csv文件的完整路径?当我手动在终端中执行相同的代码时,不需要该路径。但是,当代码作为exe文件运行(使用pyinstaller编译)时,如果没有完整路径,它将无法运行。 即使我将csv文件放在exe文件的同一目录中,它也找不到文件和程序终止。 我需要以编程方式传递路径,但我不知道如何。我很感激任何建议。

1 个答案:

答案 0 :(得分:0)

您可以使用os包来规范化并获取文件的绝对路径。

import os

def readcsv(myfile):
    myfile_o = open(myfile, "rU")
    reader = csv.reader(myfile_o, delimiter=",")

def csvmain():
    readcsv(os.path.normpath(os.path.realpath('/Users/madrad/Dnl/Hei/demand.csv')))

csvmain()

我认为,就这样,它应该有用。我也是这样做的,以获得不同路径和os的配置文件。