【问题标题】:Path and Permission Issues using Pycharm with Windows 10在 Windows 10 中使用 Pycharm 的路径和权限问题
【发布时间】:2016-08-04 14:03:30
【问题描述】:

问题

我在 Windows 10 上使用 Pycharm 时遇到权限错误和代码不一致。我可以在我的 Windows 10 桌面上使用这段代码,但它在我的 Surface 4 上不起作用:

xlsx = pd.ExcelFile('\test\Participant01Master.xlsx')

请注意文件夹和文件在我的 PyCharm IDE 项目中。我正在为上面给出的代码使用 pandas。但是,给我的错误是:

FileNotFoundError: [Errno 2] No such file or directory: '/test/Participant01Master.xlsx'

我认为我的 xlrd 依赖项可能有些奇怪。所以,我尝试卸载 xlrd 包(重新安装),得到以下结果:

尝试的解决方案

我可以成功地使用代码df = pd.read_excel(open('C:\\Users\hlyates\Source\Repos\Project0\Data\Participant01Master.xlsx','rb')) 来读取我的文件。但是,这感觉很恶心,因为我的 xlxs 代码行适用于一台机器而不适用于另一台机器?

至于路径,我验证了 PyCharm 在管理员组中,并且我的用户配置文件具有相同的权限和特殊访问权限。

总结

这真的扼杀了我对 Windows 生态系统的热情吗?我觉得 PyCharm 在我的 Windows 10 机器上没有按预期工作。当我和管理员组已经拥有此权限时,当 PyCharm 管理员(这似乎解决了一些奇怪的文件权限问题)时,我不应该右键单击并“以管理员身份运行”。我还认为代码在我的桌面上适用于我的 IDE 而不是 Surface 4 是很奇怪的。我不会像用这些东西做 Windows 那样与 Linux 抗争。我只分享这两个问题是因为我觉得它们可能相关?如果我在做一些愚蠢的事情,一定要指出这一点,我会纠正它,但我正在尽我所能提供的信息。谢谢你的耐心。 :)

参考文献

我正在使用找到的代码 here 进行测试。

【问题讨论】:

  • 谢谢。这些是有用的 cmets。我注意到我编写的代码在 main 中有效,但在 helper.py 文件中无效。不知道为什么会这样。

标签: python pandas windows-10 pycharm


【解决方案1】:

您应该只安装 Python 而不是“Program Files”文件夹,尝试“C:\Python\python35-32\”,一切都会好起来的。如果您想了解更多详情,请查看this主题。

关于 Windows 10 的炒作太多了,实际上并没有什么特别之处。

【讨论】:

  • 我将卸载 python35 并按照您所说的方式重新安装。
【解决方案2】:

可能发生的一个问题是文件分隔符的问题。看起来您在路径名中使用了反斜杠。 Python 将 '\' 视为转义字符。要规范您的文件路径(独立于操作系统),请使用 os.path.normpath 将斜杠转换为当前操作系统使用的文件分隔符:

xlsx = pd.ExcelFile(os.path.normpath('\test\Participant01Master.xlsx'))

另一种方法可以使用os.sep 代替斜杠。这将为运行 python 的 OS 使用正确的文件分隔符:

xlsx = pd.ExcelFile('{0}test{0}Participant01Master.xlsx'.format(os.sep))

参考资料: 操作系统路径文档:https://docs.python.org/2/library/os.path.html#os.path.normpath

操作系统 sep 文档:https://docs.python.org/2/library/os.html#os.sep

关于 python 文件路径的博客:https://pythonconquerstheuniverse.wordpress.com/2008/06/04/gotcha-%E2%80%94-backslashes-in-windows-filenames/

【讨论】:

    【解决方案3】:

    我在 Windows 10 中使用 pycharm 在我使用下一个的任何系统中查找文件:

    from os.path import expanduser, join, dirname, abspath
    home = expanduser("~")  # this is the path to the home folder of the current user
    curdir = dirname(abspath(__file__))  # This one returns the path to the file that is running
    filepath = join (curdir, 'filename.txt')  # This one joins the path of my current directory to a file name (or any other path) independent of the system
    

    我已经对此进行了测试,并且可以在 Linux 和 Windows 中使用

    【讨论】:

      猜你喜欢
      • 2020-06-29
      • 2019-12-14
      • 2018-04-26
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2020-05-04
      • 1970-01-01
      相关资源
      最近更新 更多