【问题标题】:Alternative way to change from a string literal to a raw string literal when reading in a file path在文件路径中读取时从字符串文字更改为原始字符串文字的替代方法
【发布时间】:2020-06-10 06:56:57
【问题描述】:

我正在写一个函数,我的输入参数是文件路径:C:\Users\HP\Desktop\IBM\New 文件夹

def read_folder(pth):
    for fle in Path(pth).iterdir():
        file_name = Path(pth) / fle
    return file_name

我要使用这个功能,需要在文件路径中指定r'',即。

read_folder(r'C:\Users\HP\Desktop\IBM\New folder')

有没有办法可以避免在文件路径中指定r'',即。像下面这样,代码就可以工作了。

read_folder('C:\Users\HP\Desktop\IBM\New folder')

我这样做的原因是为了让用户更容易将目录路径复制并粘贴到函数中并运行函数。所以更多的是为了用户端的易用性。

非常感谢。

【问题讨论】:

  • r 用于转义 \ 符号,在不使用r 时通常具有特殊含义(字符转义)。您可以将所有\替换为\\并删除r,这也可以。
  • 另一种选择是使用正斜杠 (/),它适用于 Windows 和类 Unix 操作系统
  • 为什么要避免使用原始字符串文字?也许如果您解释您的动机,我们可以建议一个更好的选择。
  • 谢谢大家。我想要这样做的原因是为了让用户更容易将目录路径复制并粘贴到函数中并运行函数。所以更多的是为了用户端的易用性。
  • 这是一个 XY 问题。

标签: python filepath string-literals rawstring


【解决方案1】:

你不能真正做到这一点,因为如果不将 r 附加到你的字符串,python 解释器就无法知道你的字符串包含 \ 故意而不是故意转义字符。

所以你必须在调用read_folder 函数时使用r"C:\Users\HP\Desktop\IBM\New folder""C:\\Users\\HP\\Desktop\\IBM\New folder" 作为参数

【讨论】:

    【解决方案2】:

    你可以转义反斜杠:

    read_folder('C:\\Users\\HP\\Desktop\\IBM\New folder')
    

    【讨论】:

    • 谢谢。我想要这样做的原因是为了让用户更容易将目录路径复制并粘贴到函数中并运行函数。因此,如果我按照您的建议进行操作,用户将需要在每个反斜杠上添加额外的反斜杠。
    • 为什么您的用户要将路径复制并粘贴到源文件中?这不是一个很好的工作流程。您的脚本应该从标准输入或文件中读取路径,其中 python 转义规则不适用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 2014-09-15
    • 2012-10-03
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多