我开发了一个flask应用程序,该应用程序在图表上显示信息。
然后我将应用程序部署在:
然后我尝试执行该应用程序,但是由于某种原因,我在ubuntu上遇到了一些错误,而这些错误是我在Windows上没有得到的。这些错误之一与文件访问有关。
FileNotFoundError: [Errno 2] No such file or directory: '/home/myuser/projects/myflaskappe/mod_on/queries\\prices.sql'
我访问该文件,并且该文件已经存在,用户有权访问该文件。 然后,我决定修改引用该文档的python代码:
# original code
data_objects = {'prices': {
'sql-path': r'queries\prices.sql',
'source': 'my_db',
'flavor': 'mysql'}
}
我发现,如果将代码从\
修改为/
,那么它可以完美地工作。
# modified code
data_objects = {'prices': {
'sql-path': r'queries/prices.sql',
'source': 'my_db',
'flavor': 'mysql'}
}
如果您注意到,我仅将\
的{{1}}修改为可以使用。
为什么会这样?
还有其他一些与此问题类似的问题,我不明白为什么会发生。
答案 0 :(得分:4)
原因是Windows和* nix为文件路径使用了不同的字符。在Windows中为\
,在* nix中为/
。
要使您的代码跨平台兼容,您应该考虑使用os.path.join()
。例如:
import os
print(os.path.join("queries", "prices.sql"))
这将在* nix上给您“ queries / prices.sql”,在Windows上给您“ queries \ prices.sql”。