【问题标题】:In Python Getting the folder wrong with pathlib ( \u2069 )在 Python 中使用 pathlib ( \u2069 ) 获取文件夹错误
【发布时间】:2019-05-19 17:19:48
【问题描述】:

我无法使以下代码在我的 mac 中运行,我不知道为什么。

import os
from pathlib import Path   
list_file_name     = 'listoffiles.txt'
list_of_files_path = Path('Users⁩/jose⁩/CODE⁩/OPS')
list_file_with_path= os.path.join (list_of_files_path,list_file_name )
print(list_of_files_path)

结果: 用户/jose/CODE/OPS/listofffiles.txt 这似乎没问题

但是当我继续为了将文本文件读入列表时:

lineList = [line.rstrip('\n') for line in open(list_file_with_path)]

我得到: FileNotFoundError: [Errno 2] 没有这样的文件或目录:'Users\u2069/jose\u2069/CODE\u2069/OPS/listofffiles.txt'

我不明白如何调用路径才能使其正确。

一些帮助? 我做错了什么?

注意事项: 在互联网上研究这个问题时,我发现有几页告诉我们使用 os 库中的路径的“旧”方式,而“新的和好的方式”是 python 3.4 中的 pathlib。是这样吗。我应该忘记os吗?

【问题讨论】:

  • 您的字符串'Users⁩/jose⁩/CODE⁩/OPS' 中似乎有奇怪的字符\u2069。您可以尝试再次重写此字符串。当我在 Linux 上尝试print('a\u2069b') 时,它会显示ab,所以这个字符对人们来说是不可见的。也许问题是你的编辑器。
  • 我在使用 jupyter 笔记本

标签: python path filepath os.path pathlib


【解决方案1】:

上面示例代码中的字符串在字符串常量中直接输入了 Unicode 字符。我剪切并粘贴了您的代码并查看结果:

from pathlib import Path   
list_of_files_path = Path('Users⁩/jose⁩/CODE⁩/OPS')
print(repr(list_of_files_path))

输出:

WindowsPath('Users\u2069/jose\u2069/CODE\u2069/OPS')

我的编辑器甚至会显示它们:

U+2069 是一个不可见的双向文本控制字符POP DIRECTIONAL ISOLATE。也许您的编辑器在输入时处于双向文本模式?要解决此问题,请重新键入字符串并通过repr() 确保没有更多控制字符。

【讨论】:

  • 就是这样。我从 info 中复制并粘贴了路径,其中包含一个我认为已删除但未完全删除的字符。
猜你喜欢
  • 2022-07-27
  • 2022-06-27
  • 2016-02-11
  • 2020-12-14
  • 1970-01-01
  • 1970-01-01
  • 2021-02-13
  • 1970-01-01
  • 2018-05-11
相关资源
最近更新 更多