【问题标题】:Pathlib concatenation mutates value unpredictablyPathlib 连接会不可预测地改变值
【发布时间】:2021-01-20 03:04:42
【问题描述】:

我有一个使用一些成员变量来形成字符串的类。在部分代码中,它执行以下操作:

print(self.outfolder)
output_location = self.outfolder / f"{workable}_{i}.wav"
print(output_location)

然而,终端会打印:

/Users/james/Cloud/Projects/ElectroMagnetic/dump/segments
/Users/james/Cloud/Projects/ElectroMagnetic/reaper/highgain_source/bounces/Kindle_04.wav

我一生都无法弄清楚为什么这个值会以这种方式从串联中发生变异。确实形成的路径看起来很像正在使用存储在类中的完全不同的成员变量,因此它不是无关的,但它是完全不可预测的。我已经尽可能多地调试了 print() ,但我正在努力理解为什么路径连接不正确。

任何指针?

【问题讨论】:

  • 您似乎正在打印出两个单独的值,如果您要检查 self.outfolder 是否已发生变异,请尝试打印该值而不是 output_location
  • 我唯一的想法是这两条路径可以通过符号链接指向同一个地方,并且转换是由于最终路径被规范化。但我假设你会认识到这一点并告诉我们这一点,无论如何这将是一个奇怪的事件,所以我认为不是这样。我可能想知道workable 是否包含相对路径,但这也不能完全解释。
  • 您说这是“代码的一部分”。您能否将此行为隔离为一个仍然表现出相同奇怪行为的简单脚本。如果没有,那可能会告诉你一些事情。
  • 我设法找到了问题所在。我认为可行的是相对路径,但它是绝对路径。永远不要假设!

标签: python pathlib


【解决方案1】:

原来workable 是绝对路径而不是相对路径。这使得路径连接产生了意想不到的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-30
    • 2020-06-21
    • 2014-07-29
    • 2015-12-11
    • 2019-03-04
    • 2016-06-30
    • 1970-01-01
    • 2022-12-11
    相关资源
    最近更新 更多