"File not found" 试图在 Python 中列出从 Finder 拖放到终端的路径
"File not found" trying to listdir() a path dragged-and-dropped from Finder to terminal in Python
在研究了这个错误之后,最建议的解决方案是使用绝对路径而不是相对路径(这是有道理且显而易见的)
然而,这在 macOS 中不起作用。
我认为 python 在所有平台上的工作方式相同
我的代码:
#!/usr/bin/python3
import os
directory = input("insert path: ")
for filename in os.listdir(directory):
f = os.path.join(directory, filename)
if os.path.isfile(f):
print(f)
一旦我 运行 我得到一个提示,要求我插入目录路径。所以我拖放目录并插入绝对路径。
在我按下回车键之后。我收到著名的错误文件或目录未找到。
有帮助吗?
当我 运行 你的代码并将一个文件夹从 finder 拖到 (iterm2) 终端 window 时,它会在路径后插入一个 space,可能有助于以防万一你想将其他参数传递给 shell,这将是 space 分隔。在按回车之前手动删除 space,它应该可以工作。
当你拖入的路径有 space 时,Finder 似乎试图引用这些 space,例如,foo bar
变成 foo\ bar
。同样,这对于 shell 是有意义的,其中 spaces 可以像这样转义,但是您的 Python 程序不是 shell,因此您需要检查 \
并再次用普通的
替换它:
directory = directory.replace(r"\ ", " ")
如果你想做那种处理,你也可以删除尾随 space 以获得更好的可用性:
directory = directory.strip()
在研究了这个错误之后,最建议的解决方案是使用绝对路径而不是相对路径(这是有道理且显而易见的)
然而,这在 macOS 中不起作用。
我认为 python 在所有平台上的工作方式相同
我的代码:
#!/usr/bin/python3
import os
directory = input("insert path: ")
for filename in os.listdir(directory):
f = os.path.join(directory, filename)
if os.path.isfile(f):
print(f)
一旦我 运行 我得到一个提示,要求我插入目录路径。所以我拖放目录并插入绝对路径。
在我按下回车键之后。我收到著名的错误文件或目录未找到。
有帮助吗?
当我 运行 你的代码并将一个文件夹从 finder 拖到 (iterm2) 终端 window 时,它会在路径后插入一个 space,可能有助于以防万一你想将其他参数传递给 shell,这将是 space 分隔。在按回车之前手动删除 space,它应该可以工作。
当你拖入的路径有 space 时,Finder 似乎试图引用这些 space,例如,foo bar
变成 foo\ bar
。同样,这对于 shell 是有意义的,其中 spaces 可以像这样转义,但是您的 Python 程序不是 shell,因此您需要检查 \
并再次用普通的
替换它:
directory = directory.replace(r"\ ", " ")
如果你想做那种处理,你也可以删除尾随 space 以获得更好的可用性:
directory = directory.strip()