【问题标题】:Concatenating string and filepath adds extra backslash in pandas连接字符串和文件路径在 pandas 中添加了额外的反斜杠
【发布时间】:2019-07-23 19:52:11
【问题描述】:

这几乎是令人尴尬的简单,但我根本找不到解决这个问题的方法。我的代码过去也可以正常工作,基本没有任何改变。老实说,我看不到错误。

在以下代码中,每当我运行 pd.read_excel 时,我的串联中都会出现一个额外的反斜杠:

sports_data = [pd.read_excel(r'Data\NData' + str(season) + ".xlsx") for season in season_list]

我想要的只是文件路径的开头,与我之前在列表中设置的季节变量相关联。

谢谢,相信我,我对此进行了广泛而广泛的检查!

我已经用双斜杠和原始字符串进行了同样的测试。每次反斜杠加倍时,它们都不起作用。我什至已经分离了文件路径,但它仍然不起作用

每次我得到的错误如下:

FileNotFoundError: [Errno 2] No such file or directory: 'Data\\NData2002-2003.xlsx'

如果我尝试运行双反斜杠以使换行成为简单的反斜杠,它仍然会加倍:

FileNotFoundError: [Errno 2] No such file or directory: 'Data\\\\NData2002-2003.xlsx'

【问题讨论】:

  • 好吧,想通了 - 轻松做到这一点看起来并不可行,所以简单地省略了使用目录作为 read_excel 过程的一部分。将所有数据文件移至 .py 文件夹,现在一切正常。

标签: python pandas operating-system glob


【解决方案1】:

此行为与 Python 的正常行为一致。在 REPL 中尝试一下:

>>> s = r'path\to\my\file'
>>> s
'path\\to\\my\\file'
>>> print(s)
path\to\my\file

原始字符串文字仍然在内部存储为普通字符串,并且在获取文件路径时仍需要在 Python 中转义反斜杠。你确定文件存在吗?仔细检查文件名和类型以确保它们完全匹配。

【讨论】:

  • 嘿!这是公平的,这种行为似乎按预期工作。该文件已就位,在正确的文件夹中。命名:NData2002-2003.xlsx。所以文件本身没有问题,我已经检查了很多次。只是想看看我如何解决双斜线。
  • 要清楚,您正在某个文件夹FolderA 中运行您的Python 脚本,而FolderA 包含一个Data 文件夹,而该文件夹又包含@987654326 @?
  • 是 - 文件夹结构正确,文件也相应命名。 NData2002-2003.xlsx 肯定存在,在 Data 文件夹中。
  • 感谢迈克尔的帮助!我最终只是放弃了 read_excel 部分中的文件夹调用,并将所有数据文件移动到与 py 文件相同的文件夹中。它现在可以工作了,所以看起来扔在文件路径中不太可行。暂时只用这个。不过感谢您的观看!
  • 没问题,我查看了源代码,但似乎没有提供任何线索。您可以尝试this answer,它建议使用正斜杠,以及可能的两个相对路径./../。所以也许试试r'Data/NData' + str(season) + ".xlsx"r'./Data/NData' + str(season) + ".xlsx"。如果其中任何一个有效,请随时更新我的​​答案,或者让我知道,我会更新它。
猜你喜欢
  • 2021-06-07
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
  • 2013-05-29
相关资源
最近更新 更多