【问题标题】:Function requires a path. How do I make it into a raw path? [duplicate]函数需要路径。如何将其变成原始路径? [复制]
【发布时间】:2021-09-19 04:23:51
【问题描述】:

我在 Python 中编写了一个函数,该函数将文件路径作为参数。理想情况下,我想在开头“连接”一个 r 以转义字符,并将其变成 r"C:\User\name\location"。

我无法找到任何解决方案 - 是否有任何模块可以帮助解决这个问题?

【问题讨论】:

  • 原始字符串仅用于代码中的文字,它们不是字符串数据本身的一部分。
  • 所以如果字符串是数据,你不需要做任何事情。
  • 副本有一些令人困惑的答案;但投票数最高的几位会告诉您@Barmar 在上面还传达了什么。
  • 如果你问是因为你想用一个字符串调用一个函数,而不必把r放在它前面,例如func("c:\Users") 答案是做不到。
  • 我实际上已经尝试了该线程中的所有解决方案,但它们似乎都不起作用。 str.encode(unicode-escape).decode() 解决方案适用于常规字符串,但不适用于文件路径。仍然收到错误“SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXXXX escape (, line 3)”。

标签: python function path unicode-escapes


【解决方案1】:

您根本不需要对函数进行任何修改。

def f(path):
    ...
    ...

f(r"C:\User\name\location")

您提到的“r”将用于形成您传递给函数的字符串。字符串就是字符串,不管你如何形成它,但 Python 为你提供了不同的方法,例如:

f("C:\\User\\name\\location")

到函数传递字符串时,字符串已经形成。现在它是如何形成的已经没有区别了,只是它在所有正确的地方都有所有正确的字符!

【讨论】:

  • 谢谢,但是除非我不明白,否则这并不能解决问题。我特别希望以发布的格式读取路径。我希望函数传递通过从文件资源管理器复制路径获取的路径,并且不希望用户必须事先手动放置“r”。
  • 好的,我明白了。我认为问题在于,如果您创建一个像“C:\an\example”这样的字符串,那么在函数看到该字符串时,您尝试保留的信息将已经被删除,因为任何有效的转义字符都已经是更换。可能有一种可靠的方法可以在函数内部撤消这种转义,但我不确定这是否适用于所有情况。
猜你喜欢
  • 1970-01-01
  • 2020-10-24
  • 2022-01-01
  • 2012-05-25
  • 2011-04-05
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
  • 2016-12-26
相关资源
最近更新 更多