python解释/和\ Windows和Ubuntu

时间:2018-08-10 06:54:06

标签: python python-3.x

我开发了一个flask应用程序,该应用程序在图表上显示信息。

  • Windows 10
  • Python 3.6.6
  • conda 4.5.4

然后我将应用程序部署在:

  • Ubuntu Server 18.04
  • conda 4.5.4
  • python 3.6.6

然后我尝试执行该应用程序,但是由于某种原因,我在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}}修改为可以使用。

为什么会这样?

还有其他一些与此问题类似的问题,我不明白为什么会发生。

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”。