【发布时间】:2018-01-08 17:00:59
【问题描述】:
我已经部署了一个运行良好的 django webapp。它为新发布的 .csv 文件抓取站点,然后将它们用于数据分析,然后将其返回给用户。
最新的 .csv 在已部署版本上未被识别为文件,但在我的本地计算机上的测试版本上。结构如下:
-indicator-analyser
-Analyser
-AnalysisScripts
-uploads
-data
-2017
-Monthly_File_Jun_Final.csv
-Monthly_File_Sep_Final.csv
当用户尝试在Monthly_File_Jun_Final.csv 上运行脚本时,webapp 会按预期运行。当他们在Monthly_File_Sep_Final.csv 上运行相同的脚本时,django 会抛出一个错误,因为没有找到文件。我采用了传入的文件路径并使用它在资源管理器中打开文件,并且我使用相同的文件路径将 .csv 作为数据框加载到控制台中的 pandas 中,没有任何问题。
传递给加载脚本的路径是:
C:\\webapp\\indicator-analyser\\Analyser/uploads/data/2017/Monthly_File_Sep_Final.csv
当使用os.path.isfile(filepath) 进行评估时,它会以False 的形式返回。 However, when the other file is selected, this is returned and recognised as a file:
C:\\webapp\\indicator-analyser\\Analyser/uploads/data/2017/Monthly_File_Jun_Final.csv
仅供参考,这是在 IIS 服务器上运行的。我已经重新启动机器和服务器无济于事。
总之,我可以访问这个文件:
- 通过控制台
- 在我的本地实例上
- 通过我的文件浏览器
但它在实时 django 实例中不被识别为文件。
【问题讨论】:
-
你还能显示你尝试访问文件的代码吗?
-
有点复杂——数据集有自己的类,文件名有添加时间框架的功能,然后文件名根据时间框架放置在路径中,数据集。我知道它在哪里失败,我已将文件路径输出为失败点(上图)。两个文件路径示例都是同一个类,具有添加 tiemframe 的相同函数。
Jun文件将if os.path.isfile(filepath)传递为True,而Sep是False。 -
尝试在文件夹中打开 Python shell 并执行
os.listdir三重检查字符和拼写。 -
@sytech 是的,我确实这样做了,并且文件出现了。我从 django 输出了文件路径,然后在控制台中尝试了
os.path.isfile(filepath),结果被评估为True。