当前位置: 首页 > 知识库问答 >
问题:

python-错误发生在相对路径,但不是绝对路径在macOS

谭骏
2023-03-14

我有一个奇怪的问题。我只是想做一个基本的显示相对路径的目录内容。

在桌面上创建了一个测试目录

测试目录内容

test.py
test1 -- folder
    sample.txt

测试内容。派克

import os

dataDir = "test1"
for file in os.listdir("/Users/username/Desktop/test"):
    print(file)

摘要-绝对路径

  • 工程-在视觉工作室代码
  • works-macOS终端python3 /Users/username/Desktop/test/test.py

但是,当使用变量时,我得到一个错误:

测试内容。派克

import os

dataDir = "test1"
for file in os.listdir(dataDir):
    print(file)

摘要-相对路径

  • 作品-在visual studio代码中
  • 错误-macOS终端python3/Users/username/Desktop/test/test。派克
    Traceback (most recent call last):
     File "/Users/username/Desktop/test/test.py", line 4, in 
        for file in os.listdir(dataDir):
    FileNotFoundError: [Errno 2] No such file or directory: 'test1'

共有2个答案

姜旭
2023-03-14
匿名用户

下面的解决方案就是从这个答案中得到启发的

解决问题的一个简单方法是创建绝对路径。(我建议在处理不同的目录和文件时始终使用该选项)

首先,您需要关心实际的工作目录。使用VS代码时,工作目录位于所需目录(/Users/username/Desktop/test/)中。

但是如果使用命令行,实际的工作目录可能会改变,这取决于调用脚本的位置。

要获取脚本实际所在的路径,可以使用python变量\uuuuu file\uuuu<代码>\uuuu文件\uuuu是脚本所在目录的完整路径。

要正确使用脚本并能够使用两种方法调用它,以下实现可以帮助您:

import os

dataDir = "test1"

# absolute path to the directory where your script is in
scriptDir = os.path.dirname(__file__)

# combining the path of your script and the 'searching' directory
absolutePath = os.path.join(scriptDir, dataDir)

for file in os.listdir(absolutePath):
    print(file)

洪胤
2023-03-14

我完全取决于启动代码时您所在的文件夹。

让我们说你的。py文件位于folder1/folder2/file中。py并且您的test1文件夹是folder1/folder2/test1/ 。在folder1中打开一个终端并启动python3/folder2/file。py。程序将检查folder1/test1/中的文件。

尝试导航到实际的文件夹,这应该工作。如果您想在启动代码的任何地方使用它,您必须对当前目录进行一些检查,并手动将代码指向所需的路径。

 类似资料:
  • 主要内容:什么是当前工作目录,什么是绝对路径与相对路径,Python处理绝对路径和相对路径在介绍绝对路径和相对路径之前,先要了解一下什么是当前工作目录。 什么是当前工作目录 每个运行在计算机上的程序,都有一个“当前工作目录”(或 cwd)。所有没有从根文件夹开始的文件名或路径,都假定在当前工作目录下。 注意,虽然文件夹是目录的更新的名称,但当前工作目录(或当前目录)是标准术语,没有当前工作文件夹这种说法。 在 Python 中,利用 os.getcwd() 函数可以取得当前工作路径的字

  • 问题内容: 如果使用绝对路径,则无法将整个目录移动到新位置。如果使用相对路径,则无法将单个文件移动到新位置。 这里有什么解决方案?您是否设置了一个包含根路径并从那里开始的配置文件?还是您有类似的规则:永不移动文件? 我在某些项目中看到人们使用dirname( FILE )。我的意思是,为什么不简单地将其删除,因为目录名还是相对的(取决于文件所在的位置)? 问题答案: 您应该使用一个配置文件,该配置

  • 在 Linux 中,简单的理解一个文件的路径,指的就是该文件存放的位置,例如,在《 Linux文件系统的层次结构》中提到的 /home/cat 就表示的是 cat 文件所存放的位置。只要我们告诉 Linux 系统某个文件存放的准确位置,那么它就可以找到这个文件。 指明一个文件存放的位置,有 2 种方法,分别是使用 绝对路径和 相对路径。 我们知道,Linux 系统中所有的文件(目录)都被组织成以根

  • 问题内容: 就像标题中所说的,绝对路径名和相对路径名有什么区别?我现在正在上一门计算机组织课程,而我正在上的讲座是Unix中的速成班。演讲幻灯片说: 作为参考,“上一张幻灯片”基本上显示了一个文件树,其根目录/为顶级节点。 幻灯片后显示: 我仍然对绝对路径名和相对路径名之间的区别感到困惑。例如,我在Mac上。我的根目录是/。要从/获得我的文档,我必须这样做。 进入文档后,我需要访问一个名为的文件夹

  • 问题内容: 我有文件A的绝对路径。 我有一个从文件A的目录到文件B的相对路径。此路径可以并且将使用“ ..”以任意复杂的方式向上移动目录结构。 范例A: 示例B: 我如何结合这两者以获得 最简单的 绝对路径到文件B? 问题答案: 如果我的问题正确,那么您可以执行以下操作:

  • 问题内容: 我正在编写一个程序,其中的一个组件必须能够采用给定的路径(例如或)和基于该位置的相对路径(例如或或)并产生绝对路径由相对路径暗示。考虑以下目录树。 该文件包含一个链接,如。该计划获得通过或,并将其与结合来获得。 同样,文件具有链接,程序需要从该链接返回。有合理的方法做到这一点吗? 谢谢。:) 编辑: 谢谢斯蒂芬·温伯格!对于未来的每个人,这是我使用的代码。 问题答案: 在与使用时应该做